我想使用觸發器在2個不同數據庫的2個表中獲得數量字段同步。MySQL錯誤1442使用2個觸發器更新2個不同數據庫上的2個表的字段
我發現了一些例子,並試圖使其適應這一需求,爲什麼不成功,顯示這個錯誤...
#1442
- 在存儲函數/觸發無法更新表「oc_product」,因爲它是已經用於調用這個存儲的函數/觸發器的語句。
...試圖perfom此查詢時:
UPDATE `db`.`oc_product` SET `quantity` = '220' WHERE `oc_product`.`product_id` = 50
觸發對於DB2,表中的股票:
DROP TRIGGER IF EXISTS t1_ai &&
CREATE TRIGGER t1_ai BEFORE UPDATE ON stock FOR EACH ROW BEGIN
IF @__disable_trigger_t1t2 = 1 THEN
SET @__disable_trigger_t1t2 = NULL;
ELSE
SET @__disable_trigger_t1t2 = 1;
-- trigger logic goes in here
UPDATE `db1`.oc_product
SET `quantity` = NEW.quantity
WHERE SKU = NEW.SKU;
END IF;
END &&
觸發爲DB1,表oc_product:
DROP TRIGGER IF EXISTS t2_ai &&
CREATE TRIGGER t2_ai BEFORE UPDATE ON oc_product FOR EACH ROW BEGIN
IF @__disable_trigger_t1t2 = 1 THEN
SET @__disable_trigger_t1t2 = NULL;
ELSE
SET @__disable_trigger_t1t2 = 1;
-- trigger logic goes in here
UPDATE `db2`.stock
SET `quantity` = NEW.quantity
WHERE SKU = NEW.SKU;
END IF;
END &&
任何想法如何解決這個錯誤?
額外信息: 如果我perfom這個查詢庫存表上的DB2:
UPDATE `db2`.`stock` SET `quantity` = '220' WHERE `stock`.`id` = 7631;
則觸發t1_ai做的工作,而不是反過來
可能重複[我的MySQL觸發器不起作用,語法簡單,不復雜](https://stackoverflow.com/questions/40517731/my-mysql-trigger-doesnt-work-simple-syntax-not-複雜) – e4c5
我不這麼認爲,爲什麼其他觸發器不能完成這項工作?這是什麼原因? –
你有一個觸發器觸發anotehr,更新你不允許修改的表格之一。在這種情況下,表名爲股票 – e4c5