Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 无法更新触发器中的表_Mysql_Sql_Database_Triggers_Phpmyadmin - Fatal编程技术网

Mysql 无法更新触发器中的表

Mysql 无法更新触发器中的表,mysql,sql,database,triggers,phpmyadmin,Mysql,Sql,Database,Triggers,Phpmyadmin,我做了一个新的触发器,它必须更新员工的工资。它从表payment中提取2个值现金和月,并将它们划分为一列how_mou to_payment 我看了一下主题: 但这对我没有帮助,因为他们只使用一张桌子,而且他们可以毫无问题地放新的 这是我的扳机: 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

我做了一个新的触发器,它必须更新员工的工资。它从表payment中提取2个值现金和月,并将它们划分为一列how_mou to_payment

我看了一下主题:

但这对我没有帮助,因为他们只使用一张桌子,而且他们可以毫无问题地放新的

这是我的扳机:

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.

如果两个表之间存在一对一关系,则可以在插入触发器之前使用此代码-

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

好吧,这是可行的,但是支付多少是空的,即使现金=8000,月=8。如果p.cash或p.months中的一个是空的,它可以是空的。尝试从触发器运行SELECT,将正确的值添加到WHERE条件。结果是什么?当我注意到它时,我把它改为0.00。