【发布时间】:2014-12-25 13:26:20
【问题描述】:
创建表后,我尝试输入主键和外键。但是,我的外键有问题,不胜感激!这是我的代码:
Create Table EMPLOYEE
(
SSN_Number CHAR(9) NOT NULL,
First_Name Varchar(15)NOT NULL,
Mid_Name Char,
Last_Name Varchar(15) NOT NULL,
Birthday Date,
Address Varchar(50),
Gender Char,
Salary Money default 8000,
Supervisor_SSN Char(9),
Department_Number int
);
ALTER TABLE EMPLOYEE
ADD CONSTRAINT pk_employee PRIMARY KEY (SSN_Number);
ADD CONSTRAINT ck_employee CHECK (Gender IN ('M', 'm', 'F', 'f'))
ADD CONSTRAINT fk_employee FOREIGN KEY (Supervisor_SSN) REFERENCES employee (SSN_Number) ON DELETE SET NULL;
我得到的外键错误是:
消息 1785,第 16 级,状态 0,第 1 行
在表“EMPLOYEE”上引入 FOREIGN KEY 约束“fk_employee”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。消息 1750,第 16 级,状态 0,第 1 行
无法创建约束。查看以前的错误。
【问题讨论】:
-
我认为您不能将 CASCADE 与自引用外键一起使用。 (事实上,我从来都不是使用 CASCADE 的忠实拥护者。)通常情况下,删除有下属的员工的逻辑会以 首先 重新分配这些下属的方式编写。
-
这是给学校的作业,方向特别要求我这样写参考。
-
好的,那么这些信息必须以某种方式出现在您的笔记或课堂资源中,不是吗?或者您的讲师可能不太了解 SQL Server 的工作原理?你能告诉我们你确切的作业指导吗? (并不是说我们真的应该帮助你完成作业。)
标签: sql-server sql-server-2008