如果更新,则在同一张表上执行触发器
Posted
技术标签:
【中文标题】如果更新,则在同一张表上执行触发器【英文标题】:Execute a trigger on the same table if updating 【发布时间】:2019-08-21 03:16:07 【问题描述】:我需要在同一张表上执行一个包含UPDATE
语句的触发器。
我已经尝试过这段代码。如果我检查表格,行会更新,但我会收到一条错误消息:
无法更新存储函数/触发器中的表“订单”,因为它已被调用此存储函数/触发器的语句使用
DROP TRIGGER IF EXISTS UpdateTotal;
DELIMITER |
CREATE TRIGGER UpdateTotal BEFORE UPDATE ON Orders
FOR EACH ROW
BEGIN
UPDATE Orders P1
SET NEW.order_total = NEW.order_total + 3.02
WHERE order_id IN (SELECT * FROM (SELECT MAX(order_id) FROM Orders) P2);
END
|
DELIMITER ;
【问题讨论】:
【参考方案1】:您不能在触发器中完成所有这些操作。根据documentation:
在存储的函数或触发器中,不允许修改 已被(用于读取或写入)的表 调用函数或触发器的语句。
详细解释需求和表结构。
【讨论】:
以上是关于如果更新,则在同一张表上执行触发器的主要内容,如果未能解决你的问题,请参考以下文章