首页 > 解决方案 > 更新时在同一张表上执行触发器

问题描述

我想在 phpMyAdmin-MySQL 中执行一个触发器,该触发器在UPDATE同一个表上包含一条语句,如下所示:

create trigger AFTER INSERT ON Table
  FOR EACH ROW BEGIN
    UPDATE Table
      SET Total = NEW.Total + 1.03
      WHERE order_number = NEW.order_number;
   END

也许,这是不可能的。如果没有,有什么方法可以模拟吗?

标签: mysqltriggersphpmyadmin

解决方案


MySQL 有一个约束,您不能在触发器中更新同一个表。但是,如果 order_number 是唯一的INSERT,我认为您可以通过修改触发器Total中的值来实现相同的结果:BEFORE INSERT

CREATE TRIGGER update_total BEFORE INSERT ON Table
FOR EACH ROW 
BEGIN
  SET NEW.Total = NEW.Total + 1.03;
END

dbfiddle 上的演示


推荐阅读