在后台自动执行MySQL语句

时间:2015-05-06 10:22:22

标签: java mysql sql server-side

我想从MySQL表中删除未更新超过3分钟的记录。如何在后台设置计时器来管理它而不用java中的事件或方法调用?这可能吗?

DELETE FROM bus WHERE created_at < (NOW() - INTERVAL 5 MINUTE) 

2 个答案:

答案 0 :(得分:0)

<强> 修改

误读了您的问题 - 以下内容描述了如何使用Java来安排任务而不是独立于Java层进行任务

您可以使用TimerTimerTask的组合来实现此目的。它们共同形成了一个非常简单的调度设施Timer计划定期TimerTasks

网上有很多好的教程:for example

答案 1 :(得分:0)

正如@abhishek-ghosh正确指出的那样,您可以使用CREATE EVENT

CREATE EVENT event_bus_delete
   EVERY 5 MINUTE
   DO 
      DELETE FROM bus WHERE created_at < (NOW() - INTERVAL 5 MINUTE);

MySQL 5.1.6中添加了事件支持。但是,MySQL事件调度程序默认情况下不运行,需要启用才能使事件生效。

请参阅this StackOverflow answerHow to Configure MySQL Event Scheduler文章,了解如何启用MySQL事件调度程序并确保其正常运行。

使用MySQL配置文件中的命令行选项--event-scheduler=ONsetting event_scheduler=ON(Windows上的my.cnf或my.ini)启动MySQL时,可以确保调度程序启动。

或者,您可以从MySQL命令行启动调度程序:

SET GLOBAL event_scheduler = ON;