这是我的触发器:
CREATE TRIGGER update_avatar
BEFORE INSERT ON `tbl_archivos` FOR EACH ROW
UPDATE `tbl_archivos`
SET `is_avatar`='0'
WHERE `tbl_usuarios_id_usuario`=NEW.`tbl_usuarios_id_usuario`
这是错误:
#1442 - Can't update table 'tbl_archivos' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
我想在上传文件时将状态“is_avatar”更新为 0,其中 id_usuario = 插入的 id_usuario。
怎么了?
最佳答案
它不起作用,因为您正在 INSERT
触发器中运行 UPDATE
- 两个语句修改同一个表。似乎没有办法在 MySQL 中使用触发器,该触发器在激活时遍历表中的所有行。
可以改变正在修改的行的列的值看例子in this question .
您的问题(作为变体)的解决方案可能包括构建一些应用程序来调用一些过程,这将在给定的时间间隔更新您表中的数据,或者也可以为此使用 cron 作业。
关于MySql 在插入时触发(错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20342713/