gpt4 book ai didi

mysql - 在触发器中更新后更新同一行

转载 作者:IT老高 更新时间:2023-10-29 00:21:34 30 4
gpt4 key购买 nike

我希望 epc 列始终为 earnings/clicks。我正在使用 AFTER UPDATE 触发器来完成此操作。因此,如果我要向此表添加 100 次点击,我希望 EPC 自动更新。

我正在尝试这个:

CREATE TRIGGER `records_integrity` AFTER UPDATE ON `records` FOR EACH ROW SET 
NEW.epc=IFNULL(earnings/clicks,0);

得到这个错误:

MySQL said: #1362 - Updating of NEW row is not allowed in after trigger

我也尝试使用 OLD,但也出现错误。我可以在之前做,但如果我添加了 100 次点击,它将使用之前的 # 次点击作为触发器(对吗?)

我应该怎么做才能做到这一点?

编辑 - 将在此运行的查询示例:

UPDATE records SET clicks=clicks+100
//EPC should update automatically

最佳答案

您不能在 after 更新触发器中更新表中的行。

也许你想要这样的东西:

CREATE TRIGGER `records_integrity` BEFORE UPDATE
ON `records`
FOR EACH ROW
SET NEW.epc=IFNULL(new.earnings/new.clicks, 0);

编辑:

在触发器中,您可以访问 OLDNEWOLD 是记录中的旧值,NEW 是新值。在 before 触发器中,NEW 值是写入表的内容,因此您可以修改它们。在 after 触发器中,NEW 值已被写入,因此无法修改。我认为 MySQL documentation很好地解释了这一点。

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

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com