[英]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.