質問へのコメントで言われたことを以下に示しました:
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
だけではありません トリガーの値または行に関連する行。