我正在尝试编写一个 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) 附近使用的正确语法;
END' 在第 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