我创建了一个简单的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 对字段求和的事情)
谢谢你的帮助