如果更新后两个字段为空,则使用trigger删除记录

时间:2016-09-17 09:54:08

标签: mysql

我有这个问题。当用户对表person_tbl中的单行进行更新且列pers_namepers_surname为空时,触发器必须删除此记录。

此触发器不起作用。为什么呢?

CREATE TRIGGER `trg_person_delete` AFTER UPDATE ON `person_tbl ` FOR EACH ROW BEGIN
    DELETE FROM person_tbl 
    WHERE pers_name IS NULL 
    AND pers_surname IS NULL;
END

1 个答案:

答案 0 :(得分:0)

触发器无法修改导致调用它的表。

来自documentation

  

存储的函数或触发器不能通过调用函数或触发器的语句修改已经使用(用于读取或写入)的表。

但您可以选择在UPDATE之前添加一项检查,以确保pers_namepers_surname列不是NULL

如果您不想为这两列提供NULL值,请考虑通过以下方式使其不可为空:

ALTER TABLE person_tbl MODIFY pers_name VARCHAR(100) NOT NULL;