如何绕过'ON DELETE SET DEFAULT'不被接受?

时间:2017-12-26 01:03:42

标签: mysql mysql-workbench innodb

我会试着解释一下我的情况。

我有一张'员工'表。我有一个'部门'表,其中一个'DepHead'列引用了'EmployeeID'。

我希望能够删除员工而不删除他们所在的任何部门。我无法使用ON DELETE SET NULL,因为“DepHead”列设置为NOT NULL,并且必须如此。它的默认值为'1',所以如果可能的话,如果删除引用的employeeID,我希望将'DepHead'值更改为'1'。

有没有办法可以做到这一点?

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