MySql 在插入时触发(错误)

标签 mysql triggers insert

这是我的触发器:

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/

相关文章:

php - 在 php 中的 MySQL 中进行社交登录时,数据库未添加

java - 为什么我收到 NumberFormatException

mysql - 使用自动增量字段插入触发器之前/之后

php - 在循环中插入 sql 查询是好事还是坏事?

java - addLast - 双循环链表 - NullPointerException

c# - 如何使用 c# 在 VS 2012 中使用 Microsoft.Ace.Oledb 在 Excel 工作表中插入新行

Mysql:我收到此错误:重复条目 ' ' index_name'。

mysql - 在查询浏览器中调用 mysql 存储过程时显示错误

wpf - 如何防止WPF触发器在退出时重置原始值

android - 如何在 Android SQLite 中使用 TRIGGER