首页 > 解决方案 > 当列字段达到0时触发删除行?

问题描述

我必须创建一个触发器,该触发器在 Quantity 字段达到 0 时自动删除行,但是在运行使 Quantity = 0 的更新后,它给了我这个错误:

无法更新存储函数/触发器中的表,因为它已被调用此存储函数/触发器的语句使用。

这是代码:

CREATE TRIGGER Deleterow
AFTER UPDATE
ON Sold
FOR EACH ROW
DELETE FROM Sold WHERE NEW.Quantity = 0

标签: mysqlsqltriggers

解决方案


您不能使用 mysql 中的触发器来执行此操作,请参阅文档

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

相反,您可以制定event并安排为您删除这些行:

create event deletesold
on schedule at  current_timestamp + interval 1 hour
    DO
      delete from sold where Quantity = 0;

推荐阅读