【问题标题】:MySQL Error: Can't update table 'tbl' in stored function/trigger because it is already used by statement which invoked this stored function/triggerMySQL错误:无法更新存储函数/触发器中的表'tbl',因为它已被调用此存储函数/触发器的语句使用
【发布时间】:2015-02-13 09:00:18
【问题描述】:

错误:无法更新存储函数/触发器中的表“tbl”,因为它已被调用此存储函数/触发器的语句使用。

插入代码前触发:

CREATE DEFINER=`root`@`localhost` TRIGGER `opcdls`.`tblTrigger` 
BEFORE INSERT ON `tbl` FOR EACH ROW
BEGIN
    DELETE FROM tbl 
    WHERE ProxyLoggingDate <= DATE_SUB(NOW(), INTERVAL 7 WEEK);
END

我想创建一个触发器,在每次插入之前检查每一行并删除旧的。

但是当我尝试在这个表上添加一个 ro 时,它给了我下面的错误

无法更新存储函数/触发器中的表“tbl”,因为它已被调用此存储函数/触发器的语句使用。

这个错误是什么意思? 谢谢

【问题讨论】:

  • 请问为什么我可以对其进行编程以避免此错误?

标签: mysql triggers insert


【解决方案1】:

而是一个触发器,我创建了一个事件并且它工作正常。

SET GLOBAL event_scheduler = ON; CREATE EVENT IF NOT EXISTS tbl ON SCHEDULE EVERY 1 MINUTE STARTS NOW() DO DELETE FROM tbl WHERE ProxyLoggingDate <= DATE_SUB(NOW(), INTERVAL 7 WEEK);

【讨论】:

    猜你喜欢
    • 2013-02-24
    • 2019-05-20
    • 2017-08-11
    • 1970-01-01
    • 2020-03-10
    • 2015-11-03
    • 2017-05-23
    • 2019-08-05
    • 2022-11-17
    相关资源
    最近更新 更多