2017-06-19 41 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) 
); 

(或更新其他匹配)