我正在尝试编写一个MySQL触发器,在更新行时,将调用自定义函数(在触发器之外工作正常)并更新触发器所在表中的列。
BEGIN
UPDATE candles
SET can_materials_cost = (SELECT calculateMaterialCost(NEW.can_id)
WHERE candles.can_id = NEW.can_id);
END
我已经编写了基本的审计样式触发器,在更新时将旧值保存到不同的表中,但由于某些原因,在尝试使用我的自定义函数时,我收到错误说明:
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'WHERE candles.can_id = NEW.can_id)附近使用正确的语法;
结束'第4行
自定义功能执行:
BEGIN
-- This function assumes that the raw wax cost is for 20kg bags only - BEWARE!
DECLARE result DECIMAL(10,2);
SET result = (
(select calculateWaxCost(_can_id))
+
(select calculateDyeCost(_can_id))
+
(select calculateScentCost(_can_id)));
RETURN result;
END