【发布时间】:2012-12-23 14:57:02
【问题描述】:
我创建了一个简单的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 对字段求和的事情)
感谢您的帮助
【问题讨论】:
标签: mysql stored-procedures triggers sql-update mysql-error-1442