【问题标题】:Automatically delete record when past current timestamp or date超过当前时间戳或日期时自动删除记录
【发布时间】:2012-11-29 10:14:21
【问题描述】:

我正在编写密码恢复脚本。当用户想找回密码时,会向数据库中写入50串随机验证码,作为$_GET进行验证。

这个名为recovery 的表是var(50)unique。接受链接后,该字段将被删除。但是如果用户不打算点击链接呢?这必须从数据库中删除,因为这个随机的 50 个字符串被创建的机会越来越大,并且数据库得到了不必要的数据。

我一直在环顾四周,看到了这个:

INSERT INTO what_ever ('', '', now(), DATE_ADD(NOW(), INTERVAL 3 DAY));

这样我输入了一个过期日期,但是 MYSQL 怎么能在时机成熟的时候自己删除呢?这可能吗?

如果没有,我最好的选择是什么?

编辑:

当然 3 天太多了。我想了大约 15 分钟。

【问题讨论】:

  • 你可以巧妙地用时间戳散列那个键。
  • 查找MySQL Event Scheduler,可以设置一个任务在预定义的时间间隔执行,例如从表中删除过时的记录。

标签: php mysql field


【解决方案1】:

您可以编写一个触发器,在插入新行时删除旧数据。

如果您不知道如何编写触发器,请使用高级 MySQL 客户端,例如 HeidiSQL,它会帮助您提供一些 GUI。

【讨论】:

  • 当我们在 MySQL 中也有事件时为什么要触发?
  • 我不知道事件调度器,似乎是一个非常有趣的功能。
【解决方案2】:

您可以在插入数据库时​​设置触发器,以删除任何早于一定数量的记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    相关资源
    最近更新 更多