繁体   English   中英

为什么我不能为此设置外键?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM