所以我试图创建一个新数据库,前几行给我
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;
答案 0 :(得分:2)
您有一个复合主键,因此您需要外键引用的所有列:
FOREIGN KEY(EID, SIN) REFERENCES Employee(EID, SIN)
注意:我是“合成”主键的粉丝,其中只有一个(通常是自动递增的)列用于主键。当表用于外键引用时,这尤其有用。
Here是SQL Fiddle中的示例。
答案 1 :(得分:0)
您的Employee表中没有EID
的索引。
是的,您有一个由EID和SIN组成的组合主键 - 但您不能将其用作EID的外键。
您需要自己的EID索引,或者您需要使您的外键使用相同的列组合。 (如果另一个表已经将组合用作主键,则后者可能更有意义。)