2017-06-19 104 views
1

首先我创建了这个表名称DEPARTMENT,然后我创建了Dept_Locations,它在此表中有Dnumber中的外键引用。无法添加外键constarint

create table DEPARTMENT(
Dname    varchar(20)  NOT NULL, 
Dnumber    int    NOT NULL, 
Mgr_ssn    char(9)   NOT NULL, 
Mgr_start_date  date   NOT NULL, 
Primary key(Dnumber), 
Unique(Dname) 
); 

代码Dept_Locations表:

create table Dept_Locations(
Dnum char(4), 
Dlocation varchar(16), 
primary key(Dnum,Dlocation), 
foreign key(Dnum) references DEPARTMENT(Dnumber)); 

现在,当我创建Dept_Locations执行该代码我得到一个错误:无法添加外键约束。

有人请帮忙。

回答

1

外键必须与其引用的列的数据类型相同。

Dnumber在DEPARTMENT是int,列Dnum被定义为char(4) - 但它必须被定义为int

0

认为数据类型不同。

Dnum char(4) 

Dnumber int 
0

你的主键与外键约束列的大小不同 - 尝试:

create table DEPARTMENT(
Dname    varchar(20)  NOT NULL, 
Dnumber    char(4)   NOT NULL, # <-- Note the size change 
Mgr_ssn    char(9)   NOT NULL, 
Mgr_start_date  date   NOT NULL, 
Primary key(Dnumber), 
Unique(Dname) 
); 

(或更新其他匹配)