当列字段达到0时触发删除行?

Posted

技术标签:

【中文标题】当列字段达到0时触发删除行?【英文标题】:Trigger to delete rows when column field reaches 0? 【发布时间】:2021-05-08 17:36:26 【问题描述】:

我必须创建一个触发器,当 Quantity 字段达到 0 时会自动删除行,但在运行更新后 Quantity = 0 会出现此错误:

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

代码如下:

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

【问题讨论】:

请标记您的数据库 【参考方案1】:

你不能用 mysql 中的触发器来做到这一点,请参阅documentation:

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

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

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

【讨论】:

那么我会看到更多关于活动的信息,谢谢!

以上是关于当列字段达到0时触发删除行?的主要内容,如果未能解决你的问题,请参考以下文章

当列值是 84 字节文本字段时,postgres 中保持列唯一的最有效方法是啥?

当列是 JSON 数组而不是字符串时如何过滤 ANTD 表

数据库中两张表之间的数据同步实现思路(增加删除更新)Mysqlsqlserver

SQLPlus 在插入时删除 clob 字段中的尾随空格

oracle触发器自身表更新时,怎么拿到别的表字段数据更新自身表的某个字段?

LINUX删除指定字段不匹配的行脚本怎么写