【问题标题】:Create Trigger to delete rows that are >90 days old创建触发器以删除超过 90 天的行
【发布时间】:2014-06-11 16:05:33
【问题描述】:

尝试创建将删除任何 90 天前的记录的触发器。我使用了来自stackoverflow的触发器语句,我发现并稍微更改了语句,但是在我的MySQL Workbench中,我遇到了语法错误。我似乎无法弄清楚出了什么问题。

以下是我的查询:

create trigger user_connections_dump after insert on user_connections 
for each row
begin
   delete from connection_time where Date('2014-06-09') > Date('now','-90 days')
end;

【问题讨论】:

    标签: mysql mysql-workbench


    【解决方案1】:

    您的需求看起来更像是一个事件而不是触发器。

    CREATE EVENT IF NOT EXISTS `Clean_Older_Than_90_days_logs`
    ON SCHEDULE
      EVERY 1 DAY_HOUR
      COMMENT 'Clean up log connections at 1 AM.'
      DO
        DELETE FROM log
        WHERE log_date < DATE_SUB(NOW(), INTERVAL 90 DAY)
    

    参考资料: MySQL Event Scheduler on a specific time everyday

    【讨论】:

    • 只是想理解这句话。还是数据库和sql的初级。所以基本上这个语句是在创建一个事件,每天凌晨 1 点它会从我的表中删除 90 天或更早的记录,对吗?这是自动的,对吧?
    • @AznDevil92 是的,如果你是 MySQL 的大三学生(我也是),你需要检查一些其他的东西,比如 Event Scheduler 状态和其他东西。很简单,您可以在这里了解更多信息:dev.mysql.com/doc/refman/5.5/en/create-event.html。玩它。
    • 你怎么知道这个事件会在凌晨 1 点准确触发?应该有类似 STARTS STR_TO_DATE(DATE_FORMAT(NOW(),'%Y%m%d 0100'),'%Y%m%d %H%i') + INTERVAL 1 DAY
    【解决方案2】:
    CREATE TRIGGER user_connections_dump
    AFTER INSERT ON user_connections
    FOR EACH ROW
    DELETE FROM log
    WHERE log_date < DATE_SUB(NOW(), INTERVAL 90 DAY)
    

    您应该比较log 表中的日期列,而不是文字日期。然后你使用DATE_SUB 减去日期,而不是Date 函数。

    【讨论】:

    • 我在下面的回答中使用了您的删除查询。
    • 感谢您的输入,但是我收到一个语法错误,提示“意外的 DELETE_SYM,需要 FOR_SYM”
    • 显然FOR EACH ROW 在触发器中是必需的,即使它不依赖于行。也许您应该使用事件调度程序而不是触发器。
    【解决方案3】:
    CREATE EVENT IF NOT EXISTS `Delete_Older_Than_90_Days`
      ON SCHEDULE EVERY 1 DAY
      STARTS STR_TO_DATE(DATE_FORMAT(NOW(),'%Y%m%d 0100'),'%Y%m%d %H%i') + INTERVAL 1 DAY
    DO
      DELETE LOW_PRIORITY FROM log WHERE log_date < DATE_SUB(NOW(),INTERVAL 90 DAY)
    

    【讨论】:

      猜你喜欢
      • 2015-06-05
      • 2022-01-24
      • 2021-03-23
      • 2019-09-12
      • 2021-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-22
      相关资源
      最近更新 更多