Этот триггер должен делать то, что вы хотите.После UPDATE
в transaction
он обновляет запас всех продуктов в транзакции (используя JOIN
s во всех трех таблицах, чтобы найти соответствующие продукты для транзакции):
CREATE TRIGGER update_stock
AFTER UPDATE ON transaction
FOR EACH ROW
BEGIN
IF NEW.transaction_status = 'cancel' THEN
UPDATE transaction t
JOIN transaction_details td ON td.transaction_id = NEW.transaction_id
JOIN product p ON p.product_id = td.product_id
SET p.product_stock = p.product_stock + td.qty;
END IF;
END
Демо на dbfiddle