我会试着解释一下我的情况。
我有一张'员工'表。我有一个'部门'表,其中一个'DepHead'列引用了'EmployeeID'。
我希望能够删除员工而不删除他们所在的任何部门。我无法使用ON DELETE SET NULL
,因为“DepHead”列设置为NOT NULL
,并且必须如此。它的默认值为'1',所以如果可能的话,如果删除引用的employeeID,我希望将'DepHead'值更改为'1'。
有没有办法可以做到这一点?
答案 0 :(得分:0)
按照的顺序执行以下操作:
设置命名约束,以便DBMS不会设置难以跟踪的随机值:
ALTER TABLE Department ADD CONSTRAINT CON_DEP_HEAD DEFAULT N'1' FOR DepHead;
现在,由于Department表引用了Employee表,因此添加了外键约束
ALTER TABLE Department ADD CONSTRAINT CON_DEP_DEPHEADFK FOREIGN KEY DepHead REFERENCES Employee(EmployeeID) ON DELETE SET DEFAULT;
现在,在删除Employee
中的记录时,Department
中的相应子行将其外键更改为默认。
详细了解here