MySQL设置定时任务执行事务
首先在创建定时任务之前要开启event_scheduler,具体如下:
SET GLOBAL event_scheduler = 1;
查看是否开启成功:
SHOW VARIABLES LIKE 'event_scheduler';
然后自己先用下面的小例子测试一下,看是不是真的可以:
CREATE TABLE aaa(timeline TIMESTAMP); CREATE EVENT e_test_insert ON SCHEDULE EVERY 1 SECOND DO INSERT aaa VALUE(CURRENT_TIMESTAMP);
然后立马查看aaa中的内容,每个1秒插入一条新数据,否则失败:
select * from aaa;
测试完了一定要关闭这个测试定时任务:
alter event e_test_insert disable;
把aaa表清空:
delete from aaa ;
然后删除任务:
drop event e_test_insert;
查看所有任务:
show events;
下面进入正题:
create event delInvalidSession on schedule every 5 minute do delete from session where timestampdiff(minute,from_unixtime(time),now())>5;
解释:create event delInvalidSession
创建了一个名为delInvalidSession的任务。on schedule every 5 minute
设置没5分钟运行一次。
do 都后面就是一般的sql语句了,没有什么好奇的。
然后关于timestampdiff(minute,from_unixtime(time),now())
这个函数,解释如下,也可以自己去查阅官方文档。