По-долу съм показал какво беше казано в коментарите към въпроса:
CREATE TRIGGER some_trigger AFTER UPDATE ON table_a
FOR EACH ROW BEGIN
DECLARE tname VARCHAR(20);
IF (NEW.field_offer=1) THEN
UPDATE `table_b`
SET STOCK = CASE NEW.field_state
WHEN 0 THEN STOCK - 1
WHEN 1 THEN STOCK + 1
ELSE STOCK
END
WHERE ID=NEW.ref_field
;
ELSEIF (NEW.field_offer=0) THEN
UPDATE `table_c`
SET STOCK = CASE NEW.field_state
WHEN 0 THEN STOCK - 1
WHEN 1 THEN STOCK + 1
ELSE STOCK
END
WHERE ID=NEW.ref_field
;
END IF;
...
Имайте предвид, че промених актуализациите от UPDATE ... JOIN
тъй като MySQL не ви позволява да променяте данните на задействаната таблица; въпреки че всъщност не актуализирахте table_a, JOIN можеше да е достатъчно за MySQL да възрази... това и обединенията щяха да актуализират всеки ред в table_b/c
който има съвпадение в table_a
, а не само table_a
редове, свързани със стойностите в или ред на тригера.