簡體   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