我有一个包含2个用户名和日期的表 - 我需要一种处理表的方法,以便当存储的日期大于24小时/ 1天时 - 然后将其删除。
我在想我的java应用程序可能有一个可以轮询并执行此操作的线程,或者 - 是否有可以在数据库端制作的解决方案?例如,存储过程?
由于
答案 0 :(得分:3)
您可以使用Mysql Event Scheduler定期在数据库端执行操作。
您也可以使用ScheduledThreadPoolExecutor
ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor();
// execute every 15 seconds
ses.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
// execute query to delete the proper data
}
}, 0, 15, TimeUnit.SECONDS);
答案 1 :(得分:1)
要在MySql中定期运行内容,请尝试Event Scheduler
来自MySql docs的示例事件定义:
CREATE EVENT e_hourly
ON SCHEDULE
EVERY 1 HOUR
COMMENT 'Clears out sessions table each hour.'
DO
DELETE FROM site_activity.sessions;
答案 2 :(得分:0)
您可以执行以下操作:
db.query("DELETE FROM yourtable WHERE TIMESTAMPDIFF(HOUR, NOW(), yourdate) > 24");
每天运行一次。