无法在触发器中更新表

时间:2012-12-04 05:56:49

标签: mysql sql database triggers phpmyadmin

我制作了新的触发器,它必须更新员工的工资。它从表格支付中获取2个值(现金和月份),并将它们分成“how_much_to_pay”列。

我看了一下主题: MySQL triggers cannot update rows in same table the trigger is assigned to. Suggested workaround?

但它没有帮助我,因为他们只使用1张桌子而且他们可以毫无问题地放置“新”。

这是我的触发器:

create trigger pay_out before insert on `payment_out`
for each row
then
UPDATE `payment_out` o
INNER JOIN payment p ON p.id_1 = o.id_1 AND o.id2 = p.id2
SET o.`how_much_to_pay` = p.cash / p.months;
end;
$$

以下是表格:

table payment_out
id1
id2
how_much_to_pay

table payment
id1
id2
cash
months

错误本身:

1442 - Can't update table payment_out in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

1 个答案:

答案 0 :(得分:1)

如果两个表之间有一对一的关系,那么可以在BEFORE INSERT触发器中使用此代码 -

BEGIN
  SELECT p.cash, p.months INTO @cash, @months
    FROM payment p
    WHERE p.id_1 = NEW.id_1 AND p.id2 = NEW.id2;

  SET NEW.how_much_to_pay = @cash / @months;
END