我正在運行MySQL 5.5.9和InnoDB。無法更新在AFTER INSERT中執行的觸發器表
我嘗試創建一個版本化表,其中current
字段指示記錄是否爲最新版本。喜歡的東西:
| autonumber | id | name | current
| 1 | 1 | Yes | 0
| 2 | 1 | No | 1
無論如何,我通過一個AFTER INSERT
觸發與同一個ID current = 0
更新中的所有記錄MSSQL這樣做,在過去經常。所以在這裏,我們走在MySQL:
DELIMITER |
CREATE TRIGGER TRIGGER_Products_UpdateEarlierVersions AFTER INSERT ON Products
FOR EACH ROW BEGIN
UPDATE Products
SET current = 0
WHERE id = new.id
AND current = 1
AND autonumber <> new.autonumber;
END;
|
這運行正常,但插入記錄時:
insert into Products (id, name)
values (1, "Hello SO!");
我收到以下錯誤:
Error Code: 1442. Can't update table 'Products' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
有沒有解決的辦法實現類似的事情?
我沒有鎖定,記錄已經更新。 – 2012-02-10 12:08:45
你正在鎖定它:)))這是它的工作方式,如果你更新它被鎖定的東西。行,頁面,表格等。正如我寫的嘗試並使用BEFORE觸發器。 – 2012-02-10 12:11:11