使用MySQL Scheduler从表中删除行

时间:2013-09-09 23:50:42

标签: mysql sql mysqli

我有一个叫做“regkeys”的MySQL表。该表有两列:“keyCat”和“keyNum”。在我的网络应用程序中,我有一个keygen模块,它将一个键(1134fb)和一个类别(mds或dts等)添加到此表中。

我想要完成的是:在发出(添加到数据库中)一个密钥后,我想创建一个MySQL事件来删除在我的表中停留/停留超过2天(或左右)的密钥这种方式使密钥到期(例如: - 从创建时起,计算2天,每个密钥必须删除,某些密钥迟早会被删除,具体取决于它们的创建时间)。我查看了MySQL's API,但我需要一些逻辑方面的帮助。我不知道如何告诉事件只删除存储2天(或左右)的密钥。我希望有人能给我一个简单的例子或指导我一个明确的教程。

非常感谢您提前。

编辑:我想我发现this other question对我的问题有所帮助。我想我是以错误的方式(基于密钥)。由于每个键和键类别都插入到一行中,因此调度程序应该处理行而不是键。

1 个答案:

答案 0 :(得分:2)

这是解决方案:

  1. 在数据库中启用event_scheduler,如下所示:SET GLOBAL event_scheduler = ON;
  2. 使用MySQL默认值
  3. 在我的表中添加了一个时间戳列
  4. 我创建了一个活动CREATE EVENT <name>
  5. 将活动称为按照以下时间表运行:ON SCHEDULE EVERY 20 SECOND
  6. 将SQL查询添加到事件:DO DELETE FROM <table_name> WHERE <time_stamp_column> < NOW() - INTERVAL 5 MINUTE