好吧,我已经研究并没有找到以下问题的解决方法`’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 ;
这是使用触发器的限制。
从MySql文档中:
在存储的函数或触发器内,不允许修改调用该函数或触发器的语句已经在使用(用于读取或写入)的表。