删除MySql之前触发

时间:2009-12-22 17:49:37

标签: mysql triggers

我有一个名为user的表。此表具有department表的外键。一个用户可以与一个部门相关联。在删除部门之前,我想将任何用户(具有该部门ID)设置为默认值(1)以避免参照完整性错误。

你知道一个很好的例子吗?大多数示例显示触发器应用于一个表。此处触发器应在部门上触发,但更改用户表中的值。

感谢。

3 个答案:

答案 0 :(得分:10)

我还没有测试过,但是based on the documentation,这看起来是对的:

CREATE TRIGGER update_user_before_delete BEFORE DELETE ON department
  FOR EACH ROW BEGIN
    UPDATE user SET department = 1 WHERE department = OLD.department;
  END;

答案 1 :(得分:3)

在大多数情况下,最好在删除父项时将子值设置为NULL,而不是像使用默认值一样使用默认值。

如果您认为此行为合适,则可以将其设为外键的属性,并且根本不需要触发器。

这样的事情:

ALTER TABLE `user`
ADD CONSTRAINT FK_USER_TO_DEPARTMENT FOREIGN KEY (department_id) 
REFERENCES `department` (department_id) ON DELETE SET NULL;

答案 2 :(得分:0)

您可以在触发器代码中使用任何sql语句。删除记录时会触发触发器代码。您可以使用触发触发器的记录(选择部门ID),然后选择具有该ID的任何用户并更新该用户记录。 祝你好运

相关问题