所以我已经编辑我的代码 我在另一个触发这个问题,但这个时间甚至可更改WHERE子句不利于MySQL的触发器不能更新表:已经通过调用该触发器的语句使用
DELIMITER $$
CREATE TRIGGER pic_album_change AFTER UPDATE ON pictures
FOR EACH ROW BEGIN
UPDATE albums SET counter = counter + 1 WHERE albums.id = NEW.album_id;
UPDATE albums SET counter = counter - 1 WHERE albums.id = OLD.album_id;
END $$
DELIMITER ;
错误:
<p>Error Number: 1442</p><p>Can't update table 'pictures' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
我没有看到在这个触发器中的照片表进行任何修改
我还有一个触发器,它涉及到这两个表
DELIMITER $$
CREATE TRIGGER album_change
AFTER UPDATE
ON albums
FOR EACH ROW
BEGIN
UPDATE pictures
SET
level = NEW.level
WHERE
pictures.album_id = NEW.id ;
END $$
DELIMITER ;
http://stackoverflow.com/questions/9227382/cant-update-table-that-trigger-is-executed-on-in-after-insert – Samson 2012-07-08 09:32:15
我认为你的WHERE子句是错误的方法回合。 'WHERE albums.id = NEW.album.id'会导致'albums.counter'增加(大概是每张专辑中的图片数量)。 – 2012-07-08 09:33:37
@radashk感谢您的链接,但正如我所说我的触发器没有附在同一张桌子上 – max 2012-07-08 09:39:03