После FOR EACH ROW
нет BEGIN
, поэтому mysql интерпретирует, что триггер определен только с одним оператором вставки, и рассматривает оператор обновления отдельно.Вот почему вы получаете сообщение об ошибке.Очевидно, вам также не хватает соответствующего END
.
Правильный код будет выглядеть примерно так:
DELIMITER \\
CREATE TRIGGER addStock AFTER INSERT ON purchase_invoice
FOR EACH ROW
BEGIN
INSERT INTO
purchase_stock
(
purchase_invoice_id,
item_id,
units,
...
)
VALUES
(
NEW.id,
NEW.item_id,
NEW.units
...
);
UPDATE
stock
SET
units = units + NEW.units
WHERE
item_id = NEW.item_id;
...
END\\
DELIMITER ;