私は見積もりテーブルと、estimates_line_itemsテーブルを持っています。子の広告申込情報が変更されるたびに、見積もり表を更新しようとしています。構文エラーが発生し続けます。エラーはあまり説明的ではありません(「SQL構文にエラーがあります。MariaDBサーバーのバージョンに対応するマニュアルを確認してください」)。変数の値を設定するのに失敗しているようです。
_CREATE TRIGGER Update_estimate_from_line_items
AFTER UPDATE
ON estimate_line_items FOR EACH ROW
BEGIN
-- variable declarations
DECLARE vPrev_amnt INT;
DECLARE vNew_amnt INT;
DECLARE nDiff INT;
SET vPrev_amnt = OLD.price * OLD.quantity;
SET vNew_amnt = NEW.price * NEW.quantity;
SET nDiff = new_amnt - prev_amnt;
-- trigger code
UPDATE estimates SET
subtotal = total + nDiff,
total = subtotal + (tax_rate/100 * subtotal)
WHERE estimate_id = NEW.estimate_id;
END;
_
編集:私もこのような変数を設定しようとしましたが、同じ結果が得られました:SET vPrev_amnt := (SELECT OLD.price * OLD.quantity);
どう...
drop trigger if exists Update_estimate_from_line_items;
delimiter //
CREATE TRIGGER Update_estimate_from_line_items
AFTER UPDATE
ON estimate_line_items FOR EACH ROW
BEGIN
-- variable declarations
DECLARE vPrev_amnt INT;
DECLARE vNew_amnt INT;
DECLARE nDiff INT;
SET vPrev_amnt = OLD.price * OLD.quantity;
SET vNew_amnt = NEW.price * NEW.quantity;
SET nDiff = vNew_amnt - vPrev_amnt; -- names amended
-- trigger code
UPDATE estimates SET
subtotal = total + nDiff
, total = subtotal + (tax_rate/100 * subtotal)
WHERE estimate_id = NEW.estimate_id;
END//
delimiter ;