【问题标题】:Does mysql can give each row a specified lifetime to be deleted automatically?mysql是否可以给每一行一个指定的生命周期来自动删除?
【发布时间】:2018-12-08 05:35:39
【问题描述】:

我想知道mysql(或mariadb)是否提供过期功能,可以在数据库中自动删除行,而无需使用任何额外的调度程序,也无需使用任何SQL,如DELETE

这应该在您创建表时发生或定义,以便一旦出现INSERT,它就会开始管理它。

这里有很多相关的问题:

MySQL how to make value expire?

Remove Mysql row after specified time

MySQL give rows a lifetime

但是,我找不到答案。我对使用WHEREDELETE 不感兴趣。

有可能吗?

【问题讨论】:

  • 我认为与您正在寻找的最接近的是创建一个 Event 来删除旧行,就像有人在您发布的链接之一中解释的那样。
  • @EnricoDias 我不想要the closest thing。我要找的是the thing
  • 简答 - 否
  • @Strawberry 在某些情况下可以使用。例如,“验证码”。有时,我们只需要一次数据,而不需要它的日志。并且应该在一定时间内删除。
  • 答案是“不;MySQL 没有这样的功能。”您想要解决方法吗?

标签: mysql database mariadb


【解决方案1】:

是的,您可以通过这种方式创建活动 CREATE EVENT lifetime ON SCHEDULE EVERY 1 DAY STARTS '14:05:44' ENDS '14:05:46' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN // put your delete query here with where clause by calculate your exp date END

【讨论】:

  • 不,这不是我要问的。它只是创建一个事件。我不想创建任何事件,而是在创建像 auto_increment 这样的表时为一行提供一个选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-20
  • 2014-02-22
  • 2017-10-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多