Saya telah menunjukkan di bawah apa yang dikatakan dalam komentar untuk pertanyaan:
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;
...
Perhatikan bahwa saya mengubah pembaruan dari UPDATE ... JOIN
karena MySQL tidak mengizinkan Anda untuk mengubah data tabel yang dipicu; sementara Anda tidak benar-benar memperbarui table_a, GABUNG sudah cukup bagi MySQL untuk keberatan... itu dan gabungan akan memperbarui setiap baris di table_b/c
yang memiliki kecocokan di table_a
, bukan hanya table_a
baris yang terkait dengan nilai dalam atau baris pemicu.