1. 程式人生 > 實用技巧 >MySQL設定定時任務執行事務

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())這個函式,解釋如下,也可以自己去查閱官方文件。