好吧,我已经研究过但没有找到解决以下问题的方法 '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/