mysql - 触发错误

标签 mysql sql triggers

好吧,我已经研究过但没有找到解决以下问题的方法 'SQL 错误 (1442): 无法更新存储函数/触发器中的表'消息',因为它已被调用此语句的语句使用存储函数/触发器。 `

我的触发器是创建的,只有当我在消息表上运行 INSERT 时,才会抛出这个错误,我的触发器是

DELIMITER $$ 
DROP TRIGGER IF EXISTS `onMessage` ;
CREATE TRIGGER `onMessage` BEFORE INSERT ON `messages` FOR EACH ROW 
BEGIN
       UPDATE `users` SET `users`.`messages` = ( `users`.`messages` + 1 ) 
       WHERE `users`.`uid` = NEW.uid ;
       DELETE FROM `messages` WHERE `date` < ( NOW( ) - INTERVAL 1 MINUTE ) ;
END ;
$$
DELIMITER ;

最佳答案

这是对触发器使用的限制。

来自 MySql documentations :

Within a stored function or trigger, it is not permitted to modify a table that is already being used (for reading or writing) by the statement that invoked the function or trigger.

关于mysql - 触发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9097375/

相关文章:

sql - 子表更新后数据库触发器更新父表上的行

oracle - 如何在两列上设置相同的序列号

mysql - Laravel 推送通知 token : use Eloquent or Query builder?

Mysql UPDATE query SET 来自另一个查询的结果

mysql - 什么是 DBMS 中的 'CONJUGATE KEY'

php - 从 sql(左外)LARAVEL 以数组形式返回相关数据

mysql - 在MySQL Workbench中创建表

javascript - 检查表中是否存在某个值 SQL

mysql - 单个 MySql 查询即可获取喜欢我喜欢的帖子的用户列表

android - 所有 Android Init Language 'triggers' 的列表是什么?