如果更新

时间:2019-03-30 09:28:18

标签: mysql triggers phpmyadmin

我需要执行一个触发器,该触发器在同一表上包含一个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 个答案:

答案 0 :(得分:0)

您无法在触发器中完成所有这些操作。根据{{​​3}}:

  

在存储的函数或触发器中,不允许修改   该表已经被(读取或写入)使用   调用该函数或触发器的语句。

进一步说明需求和表结构。