我正在运行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