Mysql:每10秒删除超过5年的所有行

时间:2015-04-22 12:49:27

标签: mysql

我想在mysql表(item)中删除超过5年的行。

item
----------------
id       neme         date_and_time
1          a          2015-04-11 11:10:04
2          b          2005-05-22 11:10:04
3          c          2007-06-21 11:10:04

如何执行此删除操作?

另外我想每10秒运行一次这个删除操作,我可以使用事件调度程序和触发器来执行此操作吗?这两个功能有什么不同?

2 个答案:

答案 0 :(得分:3)

尝试创建这样的事件:

CREATE EVENT DO_DELETE_OP
ON SCHEDULE
EVERY 10 SECOND
DO DELETE FROM item WHERE date_and_time < DATE_SUB(NOW(), INTERVAL 60 MONTH);

答案 1 :(得分:2)

您可以使用mysql调度程序。

https://dev.mysql.com/doc/refman/5.1/en/events.html

类似的东西:

CREATE EVENT cleanup
    ON SCHEDULE
      EVERY 10 SECOND
    DO
      DELETE FROM item WHERE date_and_time < NOW() - INTERVAL 5 YEAR;

为了使其工作,您需要启用mysql调度程序,可以这样做:

SET GLOBAL event_scheduler = ON;