1

我正在尝试编写一个 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
4

0 回答 0