【问题标题】:MySQL give rows a lifetimeMySQL 赋予行一个生命周期
【发布时间】:2013-05-13 12:31:45
【问题描述】:

如何创建一行的生命周期,以便在特定时间(例如 2 周)后自动删除该行?任何信息都会很棒。

【问题讨论】:

标签: mysql


【解决方案1】:

RDBMS 通常不允许行自动自毁。这对生意不利。

更严肃地说,一些想法,取决于您的确切需求

  • 运行计划作业以运行 DELETE 以根据某些日期/时间列删除行
  • (更复杂的想法)使用带有滑动窗口的分区表将旧行移动到另一个分区
  • 使用视图仅显示不到 2 周的行

【讨论】:

    【解决方案2】:

    在默认为CURRENT_TIMESTAMP的表中添加timestamp列,并在服务器上安装一个经常运行和修剪旧记录的cron作业。

    DELETE FROM MyTable WHERE datediff(now(), myTimestamp) >= 14;
    

    【讨论】:

      【解决方案3】:

      或者您可以添加时间戳列并始终像这样选择:

      SELECT * FROM myTable WHERE timetampColumn>=date_sub(now(), interval 2 week);
      

      如果您不需要删除数据并且只想显示最近 2 周的数据,则效果会更好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-11
        • 2013-04-06
        • 1970-01-01
        • 2017-10-06
        • 2014-09-10
        相关资源
        最近更新 更多