[英]mysql: how to sum 2 fields in the table and put the result in the 3rd field?
[英]How can I sum two fields and store the result in a third field on a MySQL table autonomously?
我创建了一个简单的UPDATE AFTER INSERT
触发器,以对两个DECIMAL(10,2)
字段求和,并用求和后的值更新第三个DECIMAL(10,2)
字段。
触发代码为:
delimiter |
CREATE TRIGGER calc_ttl_cost AFTER INSERT ON buybox_rec
FOR EACH ROW
BEGIN
UPDATE buybox_rec SET total_cost = (price+shipping_cost);
END;
|
我正在使用phpMyAdmin运行SQL命令,因此我知道触发器已成功创建。 此外,如果我运行UPDATE buybox_rec SET total_cost = (price+shipping_cost);
单独使用SQL语句,它可以按预期工作。 (我也尝试过用相同的代码对字段名进行反引号,但如果可行,我不会写所有这些代码)
问题是,当我插入新行时,触发器不起作用,并且抛出此错误:
#1442 - Can't update table 'buybox_rec' in stored function/trigger
because it is already used by statement which invoked this stored
unction/trigger.
该错误似乎是某种递归或循环引用问题,但我无法弄清楚问题出在哪里/什么地方。
我还尝试创建一个存储过程,并从触发器中调用它以尝试获得相同的结果,但是却出现了相同的错误。
我检查了许多其他与MySQL UPDATE触发器相关的SO问题,并做了一些谷歌搜索,但是我在这里。
这超出了MySQL的范围吗? 似乎是一项如此常见且容易完成的任务。
有谁知道我是如何自动完成这项任务的? (例如,我不想听到有关通过PHP汇总字段之后的信息)
谢谢你的帮助
问题是您正在尝试修改UPDATE + TRIGGER操作已使用的表的内容。 这根本无法完成,但是您有其他选择。
例如,如果有意义的数据(或自变量)是价格和运输成本,而总成本取决于它们,则可以仅将前两个保留在表中,并且可以使用非常简单的VIEW(例如SELECT price, shipping_cost, price+shipping_cost total_cost FROM buybox_rec
类的东西) SELECT price, shipping_cost, price+shipping_cost total_cost FROM buybox_rec
或您需要的其他任何字段),如果您想关注总数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.