gpt4 book ai didi

mysql - 为什么我不能对此形成外键?

转载 作者:行者123 更新时间:2023-11-29 09:35:19 25 4
gpt4 key购买 nike

我正在尝试将部门表中的外键添加到员工表中。第一个完成了,但是无法创建部门表,会弹出错误

ERROR 1005 (HY000): Can't create table `assignment`.`department` (errno: 150 "Foreign key constraint is incorrectly formed")

像这样。

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。前者可能更合适——如果一个部门的经理离开公司,你通常不会解散该部门。

关于mysql - 为什么我不能对此形成外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57774355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com