J'ai une table estimation et une table estimation_line_items. J'essaie de mettre à jour la table des estimations chaque fois que les éléments de la ligne enfant changent. Je continue à courir dans une erreur de syntaxe. L'erreur n'est pas très descriptive ("Vous avez une erreur dans votre syntaxe SQL; Vérifiez le manuel correspondant à votre version du serveur Mariadb"). Il semble que je fasse la fouille pour définir les valeurs variables.
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;
Edit: J'ai également essayé de définir les variables comme celle-ci, avec les mêmes résultats: SET vPrev_amnt := (SELECT OLD.price * OLD.quantity);
Que diriez-vous ...
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 ;