0
我在创建我的表后尝试输入我的主键和外键。不过,我的外键存在问题,并希望得到任何帮助!这里是我的代码:SQL Server 2008外键错误
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行
引进国外KEY约束 'fk_employee' 上表'员工'可能会导致周期或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。Msg 1750,Level 16,State 0,Line 1
无法创建约束。查看以前的错误。
我不认为你可以使用CASCADE与自引用外键。 (事实上,我并不是一个非常喜欢使用CASCADE的人)。通常,删除拥有下属的员工的逻辑将以这样一种方式编写,即首先重新分配这些下属。 – 2014-10-29 17:42:22
这是学校的一项任务,方向明确要求我以这种方式编写参考。 – Gunner89 2014-10-29 18:12:01
好吧,那么这些信息必须以某种方式放在笔记或课程资源中,不是吗?或者,也许你的教师不太清楚SQL Server是如何工作的?你能告诉我们你的具体作业方向吗? (并不是说我们真的应该帮助你做家庭作业。) – 2014-10-29 18:19:35