CREATE TABLE Transcripts (sID VARCHAR(7), cNo VARCHAR(10),
semester VARCHAR(20), grade CHAR(1), PRIMARY KEY (sID)
);
CREATE TABLE Students (sID CHAR(7), sName VARCHAR(20),
bDate DATE, phone VARCHAR(12), major VARCHAR(30), avgGPA VARCHAR(4), PRIMARY KEY (sID),
FOREIGN KEY (sID)
REFERENCES Transcripts(sID)
);
CREATE TABLE Courses (cNo VARCHAR(10), cTitle VARCHAR(30),
creditHours VARCHAR(2), deptName VARCHAR(30), PRIMARY KEY (cNo),
FOREIGN KEY (cNo)
REFERENCES Transcripts(cNo)
);
所以每当我运行它时,第一个外键工作得很好,每当我运行下一个表时它就会给我回复这个错误“ERROR 1215(HY000):无法添加外键约束”我做错了什么?
答案 0 :(得分:1)
这是产生错误的外键:
project.developers
但是FOREIGN KEY (cNo)
REFERENCES Transcripts(cNo)
不是该表中任何KEY的一部分。
外键必须引用父表的UNIQUE或PRIMARY KEY的列。
请参阅MySQL Creating tables with Foreign Keys giving errno: 150以获取外键所需的良好清单。
答案 1 :(得分:1)
在添加外键之前索引外键列。
Transcripts(cNo)
答案 2 :(得分:0)
将cNo
定义为Courses
表上的外键,它必须是主键
或其他表的唯一键。
CREATE TABLE Transcripts(
sID VARCHAR(7),
cNo VARCHAR(10) NOT NULL UNIQUE,
semester VARCHAR(20),
grade CHAR(1),
PRIMARY KEY (sID)
);
正如我上面写的那样,改变成绩单将解决你的问题。
答案 3 :(得分:0)
这个逻辑是不是倒退了?难道不是“成绩单”有两个引用其他两个表的FK吗?并且,正如已经指出的那样,首先声明其他两个表。