1

行の更新時にカスタム関数 (トリガーの外部で正常に動作) を呼び出し、トリガーが存在するテーブルの列を更新する MySQL トリガーを作成しようとしています。

BEGIN  
UPDATE candles 
       SET can_materials_cost = (SELECT calculateMaterialCost(NEW.can_id)  
       WHERE candles.can_id = NEW.can_id);  
END

更新時に古い値を別のテーブルに保存する基本的な監査スタイルのトリガーを作成しましたが、何らかの理由でカスタム関数を使用しようとすると、次のようなエラーが表示されます。

SQL 構文にエラーがあります。使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
4行目のEND'

カスタム関数は次を実行します。

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