【问题标题】:AUTO-DELETE ROW 1 Day After Inserted (MySQL)插入后 1 天自动删除行 (MySQL)
【发布时间】:2019-12-14 15:08:54
【问题描述】:

如何在插入某行后 1 天创建事件自动删除某行?

我有 3 个字段:

  • id varchar

  • 名称 varchar

  • 时间戳 current_timestamp()

【问题讨论】:

  • 1 天是什么意思 - 24 小时?还是可以删除第二天 00:01 23:59 创建的项目?还是为简单起见,在 2 天后(按日期)删除?

标签: mysql sql database auto-delete


【解决方案1】:

这是你的脚本。

Insert into table1 (id, name, timestamp) values (1, 'test', now())

插入后

Delete from table1 WHERE timestamp < now() - interval 1 day;

【讨论】:

  • 每次插入新行时都会在整个表上执行。 Mysql事件是正确的解决方案。
  • @Allen King,到目前为止用户没有提到插入频率,所以这个解决方案就足够了。
【解决方案2】:

请看事件:https://dev.mysql.com/doc/refman/5.7/en/events-syntax.html 在你的情况下: 你可以试试这个:

-- create a timer to update this table automatically

DROP EVENT IF EXISTS `et_update_your_trigger_name`;
CREATE EVENT `et_update_your_trigger_name`  ON SCHEDULE EVERY 1 MINUTE 
STARTS '2010-01-01 00:00:00' 
DO 
DELETE FROM `DB_NAME`.`table_name` where DATEDIFF(now(),`timestamp`) > 1;

ALTER EVENT `et_update_your_trigger_name` ON  COMPLETION PRESERVE ENABLE;

此 sql 代码创建一个触发器,并每分钟执行一次。

【讨论】:

  • 如果记录在插入后 24 小时内预计不会被删除,则无需每分钟运行一次。如果要求在下一个“天”需要删除一行,则每 12 小时运行一次此事件,甚至每天运行一次就足够了。
  • 事件不是触发器这个链接更合适dev.mysql.com/doc/refman/5.7/en/event-scheduler.html,别忘了启用事件调度器。
【解决方案3】:

请尝试这样:

DELETE FROM table1
WHERE date < DATE_SUB(NOW(), INTERVAL 1 DAY)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 2021-06-19
    • 1970-01-01
    • 2011-01-13
    相关资源
    最近更新 更多