小编典典

触发错误

sql

好吧,我已经研究并没有找到以下问题的解决方法`’SQL Error (1442): Can not update table’ messages’ in
stored function / trigger because it is already used by statement Which
invoked this stored function / trigger.``

我的触发器已创建,仅当我在消息表上运行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 ;

阅读 149

收藏
2021-04-28

共1个答案

小编典典

这是使用触发器的限制。

从MySql文档中

在存储的函数或触发器内,不允许修改调用该函数或触发器的语句已经在使用(用于读取或写入)的表。

2021-04-28