繁体   English   中英

如何汇总两个字段并将结果自动存储在MySQL表的第三个字段中?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM