mysql触发器使用自定义函数

时间:2012-11-15 13:53:56

标签: mysql function triggers

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

0 个答案:

没有答案