在MySQL中自动删除过期记录的方法?

时间:2009-02-06 18:44:07

标签: mysql

我搜索了MYSQL文档广告并且无法找到一种自动删除超过给定时间范围的记录的简洁方法。我已经能够在5.1中获得一个查询,在DIFF函数中将TIMESTAMP的值转换为DATETIME,并使用当前时间查看它是否符合到期条件。我已经读过5.1现在能够运行计划任务,但配置方式不多。我没有使用触发器。

在MySQL的5.1s文档中,它指的是创建一个事件:

'CREATE 
[DEFINER = { user | CURRENT_USER }]
EVENT 
[IF NOT EXISTS]
event_name    
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT 'comment']
DO sql_statement;

schedule:
AT timestamp [+ INTERVAL interval] ...
| EVERY interval 
[STARTS timestamp [+ INTERVAL interval] ...] 
[ENDS timestamp [+ INTERVAL interval] ...]

interval:

我目前使用的是Toad(一直是天赐之物)。我的查询有效地删除了超过30分钟的任何记录。我只需要找到如何调用此事件......

谢谢!

3 个答案:

答案 0 :(得分:5)

您正在谈论使用MySQL Scheduler。一旦你创建了这个事件,MySQL就会在你配置它的任何时间间隔自动调用它。如果您无法设置它,请发布查询和错误。

答案 1 :(得分:1)

编写一个查询并让它经常运行。比如说,每30分钟左右检查一次过期的行。

答案 2 :(得分:0)

如果不一定要准确,而且你只是家务,你可以将过程与另一个过程联系起来。如果你能负担得起的时间。

如果您有一个旧的发票文件,请在月末运行时清除它(可能有很多记录,但无论如何都是批处理过程)。添加新库存项目时清除旧库存项目(频率较低,但可能记录较少)。保持访问日志表?当最近的记录落在与今天不同的一天时清除它。 (对于低流量日志文件)等等。