我需要执行一个触发器,该触发器在同一表上包含一个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 ;
答案 0 :(得分:0)
您无法在触发器中完成所有这些操作。根据{{3}}:
在存储的函数或触发器中,不允许修改 该表已经被(读取或写入)使用 调用该函数或触发器的语句。
进一步说明需求和表结构。