2016-04-07 68 views
0

所以我試圖創建一個新的數據庫和這些前幾行給我MYSQL - 不能添加外鍵約束 - 錯誤1215

Error 1215 - Cannot add foreign key constraint 

我也試圖消除ON UPDATE/DELETE的在第二個表,但它仍然給出了同樣的錯誤

CREATE TABLE Employee(
EID INT, 
SIN INT, 
FName VARCHAR(20) NOT NULL, 
LName VARCHAR(20) NOT NULL, 
DOB DATE, 
Position VARCHAR(20) NOT NULL, 
civicNum VARCHAR(10) NOT NULL, 
StreetName VARCHAR(20) NOT NULL, 
Telephone VARCHAR(10) NOT NULL, 
Contract VARCHAR(10) NOT NULL, 
PRIMARY KEY(EID,SIN))ENGINE=INNODB; 

CREATE TABLE FullTime(
EID INT, 
SIN INT, 
SALARY INT, 
PRIMARY KEY(EID,SIN), 
FOREIGN KEY(EID) REFERENCES Employee(EID) 
ON UPDATE CASCADE 
ON DELETE CASCADE, 
FOREIGN KEY(SIN) REFERENCES Employee(SIN) 
ON UPDATE CASCADE 
ON DELETE CASCADE)ENGINE=INNODB; 

回答

2

你有一個複合主鍵,所以你需要的所有列的外鍵引用:

FOREIGN KEY(EID, SIN) REFERENCES Employee(EID, SIN) 

注:我是「合成」主鍵的粉絲,其中只有一個(通常是自動遞增的)列用於主鍵。當一個表用於外鍵引用時,這是特別有用的。

Here是SQL小提琴中的示例。

0

您的Employee表中沒有EID索引。

是的,你有一個組合由EID和SIN組成的主鍵 - 但不能將它用作EID的外鍵。

您或者需要一個EID上的索引,或者您需要讓外鍵使用相同的列組合。 (後者可能更有意義,如果其他表已使用該組合作爲主鍵)。

相關問題