我创建了一个简单的UPDATE AFTER INSERT
触发器,用于求和两个DECIMAL(10,2)
字段,并用求和值更新第3个DECIMAL(10,2)
字段。如何求和两个字段并将结果自动存储在MySQL表的第三个字段中?
触发代码:
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问题,并做了一些Google搜索,但我在这里。
这是否超出了MySQL的范围?这似乎是一个容易的任务。
有谁知道我是如何自主完成这项任务的? (AKA我不想听到关于通过PHP事后总结的领域,例如)
感谢所有帮助