行の更新時にカスタム関数 (トリガーの外部で正常に動作) を呼び出し、トリガーが存在するテーブルの列を更新する 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