受TTL影响的MySQL记录

Ili*_*sev 11 mysql

是否有可能在MySQL数据库中创建一个受TTL(生存时间)选项限制的记录.

我想制作一个简单的密码恢复功能,我需要存储一个激活密钥,该密钥只​​存储在数据库中3600秒,然后在此之后自动删除?我知道有很多其他方法可以实现这一目标,但它们并不像TTL功能那样直接.

我想MySQL没有这样的功能,但我只是想,也许我错过了什么,有吗?

Ili*_*sev 18

我刚发现MySQL 5.1+有事件调度程序.在MySQL的事件调度管理事件的调度和执行-即按计划运行的任务.

存储例程需要MySQL数据库中的事件表.此表是在MySQL安装过程中创建的.

使用它的语法是:

CREATE EVENT
  ClearUserActivationCodes
ON SCHEDULE EVERY 1 DAY
DO
BEGIN
DELETE FROM
  user_activation_code
WHERE code_time_stamp < NOW()
END
Run Code Online (Sandbox Code Playgroud)

它非常有用,完全满足我在不使用cron作业的情况下自动清除表的需求.

  • 我使用您的代码示例遇到语法错误。我只能在删除“BEGIN”和“END”语句后执行它而不会出现错误!:) (4认同)