我希望该epc列始终为earnings/ clicks。我正在使用AFTER UPDATE触发器来完成此操作。因此,如果要向该表中添加100次点击,我希望EPC自动更新。
epc
earnings
clicks
我正在尝试:
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
您无法 在 更新 后 触发器中更新表中的行。
也许您想要这样的事情:
CREATE TRIGGER `records_integrity` BEFORE UPDATE ON `records` FOR EACH ROW SET NEW.epc=IFNULL(new.earnings/new.clicks, 0);
编辑:
在触发器内,您可以访问OLD和NEW。 OLD是记录中的旧值,NEW也是新值。在 before 触发器中,这些NEW值是写入表的内容,因此您可以对其进行修改。在 之后的 触发器中,NEW值已被写入,因此无法对其进行修改。我认为MySQL文档很好地解释了这一点。
OLD
NEW