mysql - 当列字段达到0时触发删除行?
问题描述
我必须创建一个触发器,该触发器在 Quantity 字段达到 0 时自动删除行,但是在运行使 Quantity = 0 的更新后,它给了我这个错误:
无法更新存储函数/触发器中的表,因为它已被调用此存储函数/触发器的语句使用。
这是代码:
CREATE TRIGGER Deleterow
AFTER UPDATE
ON Sold
FOR EACH ROW
DELETE FROM Sold WHERE NEW.Quantity = 0
解决方案
您不能使用 mysql 中的触发器来执行此操作,请参阅文档:
存储的函数或触发器不能修改已被调用函数或触发器的语句使用(用于读取或写入)的表。
相反,您可以制定event
并安排为您删除这些行:
create event deletesold
on schedule at current_timestamp + interval 1 hour
DO
delete from sold where Quantity = 0;
推荐阅读
- c# - 使用异步 lambda 表达式正确等待 Task.Run
- javascript - 关于集群和子进程如何工作的困惑
- php - Laravel AWS SES - 403 Forbidden - SignatureDoesNotMatch 尝试发送电子邮件时
- c# - 使用整数来测试枚举值的组合
- c - 空套接字缓冲区(C 编程)
- uwp - 在 UWP 中拍摄流式 Rtsp 视频的快照
- c# - 为什么我无法从我的 NPGSQL 服务器获取数据?
- aws-lambda - 从 Lambda 解析网络负载均衡器的 DNS 名称
- c# - Azure 数据库中的存储过程在 ASP.NET 中运行速度很快,但在 SSMS 中运行速度很慢
- java - 如何使用jsoup在java中打开不同浏览器的URL