mysql - 无法更新触发器中的表

标签 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?

但这对我没有帮助,因为他们只使用一张表,并且可以毫无问题地放置"new"。

这是我的触发器:

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.

最佳答案

如果两个表之间有一对一的关系,那么您可以在 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

关于mysql - 无法更新触发器中的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13696960/

相关文章:

mysql : The syntax '--log-slow-queries' is deprecated and will be removed in a fu$

mysql_fetch_row() vs mysql_fetch_assoc() vs mysql_fetch_array()

mysql - 选择分组值和值的总和

sql - 如何从 sql 语句或存储过程连接到外部数据库?

mysql - 关系型数据库设计(MySQL)

javascript - 设计 MongoDB 数据库 - 许多嵌入式文档可以吗?

MySQL 限制 Varchar 选择

javascript - 将对象拆分成更小的部分

php - 单个 mysqli 查询语句获取总行数和限制

sql - 使用 SQL Server 数据库邮件以表格格式发送电子邮件