我有以下问题。这些是我的表格:
CREATE TABLE Author
(
author_fName VARCHAR(256) NOT NULL,
author_lName VARCHAR(256) NOT NULL,
author_dob DATE,
PRIMARY KEY (author_fName, author_lName)
# author_age INT
);
CREATE TABLE Director
(
director_fName VARCHAR(256) NOT NULL,
director_lName VARCHAR(256) NOT NULL,
director_dob DATE,
PRIMARY KEY (director_fName, director_lName)
);
CREATE TABLE Award
(
award_Name VARCHAR(256) NOT NULL PRIMARY KEY,
a_fName VARCHAR(256),
a_lName VARCHAR(256),
d_fName VARCHAR(256),
d_lName VARCHAR(256),
FOREIGN KEY (a_fName) REFERENCES Author(author_fName),
FOREIGN KEY (a_lName) REFERENCES Author(author_lName),
FOREIGN KEY (d_fName) REFERENCES Director(director_fName),
FOREIGN KEY (d_lName) REFERENCES Director(director_lName)
);
可悲的是,当我尝试创建最后一个表时,收到一个可爱的错误号150。 我进行了一些调查,发现尝试为a_lName和d_lName设置FOREIGN KEY时出现错误。
我不确定为什么会这样。
答案 0 :(得分:0)
必须按引用的顺序对引用的字段进行索引,因为您自己是在引用Director.director_lname
,所以它必须是Director
表中索引的第一个字段。引用Author.author_lName
时应该遇到类似的问题。
旁注:
SELECT d.fname FROM Director AS d
Award
引用一位董事的fname
和另一位董事的lname
。例如:“ Hayao Spielberg”