为什么不能添加这个外键约束?
问题描述:
我很沮丧。我无法为表Test_info添加外键约束:为什么不能添加这个外键约束?
FOREIGN KEY Test_info(score) REFERENCES Test(score)
它一直给我提供错误1215无法添加外键约束。我确定数据类型是一样的,以及名称等...任何人?
整个SQL表的创建是:
CREATE TABLE IF NOT EXISTS Employees (
ssn VARCHAR(20),
union_mem_no VARCHAR(20),
PRIMARY KEY (ssn)
) ENGINE=INNODB;
CREATE TABLE IF NOT EXISTS Traffic_Control (
ssn VARCHAR(20),
exam_date DATE,
PRIMARY KEY (ssn),
FOREIGN KEY (ssn) REFERENCES Employees(ssn) ON DELETE CASCADE
) ENGINE=INNODB;
CREATE TABLE IF NOT EXISTS Technician (
ssn VARCHAR(20),
T_name VARCHAR(20),
phone_num VARCHAR(20),
address VARCHAR(50),
Salary INT,
PRIMARY KEY (ssn),
FOREIGN KEY (ssn) REFERENCES Employees(ssn) ON DELETE CASCADE
) ENGINE=INNODB;
CREATE TABLE IF NOT EXISTS Model (
model_no VARCHAR(20),
Capacity INT,
Weight INT,
PRIMARY KEY (model_no)
) ENGINE=INNODB;
CREATE TABLE IF NOT EXISTS Expert (
ssn VARCHAR(20),
model_no VARCHAR(20),
FOREIGN KEY (ssn) REFERENCES Technician(ssn) ON DELETE CASCADE,
FOREIGN KEY (model_no) REFERENCES Model(model_no) ON DELETE CASCADE
) ENGINE=INNODB;
CREATE TABLE IF NOT EXISTS Plane (
reg_no VARCHAR(20),
PRIMARY KEY (reg_no)
) ENGINE=INNODB;
CREATE TABLE IF NOT EXISTS Type (
reg_no VARCHAR(20),
model_no VARCHAR(20),
FOREIGN KEY (reg_no) REFERENCES Plane(reg_no),
FOREIGN KEY (model_no) REFERENCES Model(model_no)
) ENGINE=INNODB;
CREATE TABLE IF NOT EXISTS Test (
FAA_no VARCHAR(20),
T_name VARCHAR(20),
score INT,
PRIMARY KEY (FAA_no)
) ENGINE=INNODB;
CREATE TABLE IF NOT EXISTS Test_info (
ssn VARCHAR(20),
FAA_no VARCHAR(20),
T_date DATE NOT NULL,
hours INT,
score INT,
PRIMARY KEY (ssn, FAA_no),
FOREIGN KEY (ssn) REFERENCES Employees(ssn) ON DELETE CASCADE,
FOREIGN KEY (FAA_no) REFERENCES Test(FAA_no),
FOREIGN KEY (score) REFERENCES Test(score)
) ENGINE=INNODB;
虽然不是“法律”,FK到PK是常态,无论它是什么必须是唯一的。不知道你打算为这个FK。这里有什么想法? – LoztInSpace
@LoztInSpace我的印象是外键简单地连接了两个表中的数据。我应该更清楚地知道,外键仍然是一个关键。我的错。感谢您的洞察力。 – noobcoder