[英]Why Can't I form a foreign key on this?
我正在尝试将外键从部门表添加到员工表。 第一个完成,但是我无法创建部门表,它弹出错误
错误1005(HY000):无法创建表`assignment`.`department`(错误号:150“外键约束格式不正确”)
像这样。
CREATE TABLE employee
(
First_Name VARCHAR(15) NOT NULL,
Mid_Name CHAR,
Last_Name VARCHAR(15) NOT NULL,
SSN_Number CHAR(9) PRIMARY KEY NOT NULL,
Birthday DATE,
Address VARCHAR(50),
Sex CHAR CHECK(Sex='M' OR Sex='F' OR Sex='m' OR Sex='f'),
Salary Decimal(10,2) DEFAULT'800',
Supervisor_SSN CHAR(9),
Department_Number INT,
CONSTRAINT fk_employee FOREIGN KEY(Supervisor_SSN)
REFERENCES employee(SSN_Number) ON DELETE SET NULL
);
CREATE TABLE department
(
Department_Name VARCHAR(15) NOT NULL UNIQUE,
Department_Number INT PRIMARY KEY NOT NULL,
Manaager_SSN CHAR(9) NOT NULL,
Manager_Start_Date Date,
CONSTRAINT fk_manager FOREIGN KEY(Manaager_SSN)
REFERENCES employee(SSN_Number) ON DELETE SET NULL
);
我希望将Manaager_SSN
上的外键添加到雇员表中的SSN_Number
。
如果列被声明为NOT NULL
则选项ON DELETE SET NULL
无效。 您要告诉它将列设置为不可能的值。
因此,要么将Manaager_SSN
的声明更改为NULL
,要么将外键更改为ON DELETE CASCADE
。 前者可能更合适-如果部门经理离开公司,您通常不会解散部门。
外键定义包括
... ON DELETE SET NULL
^^^^^^^^
但外键列定义为非NULL
Manaager_SSN CHAR(9) NOT NULL,
^^^^^^^^
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.