比如有如下需求:刪除某個表中當前時間距離日期字段(create_date) 大於8分鍾的所有記錄,每30s執行一次該操作。
1.創建存儲過程test()
//刪除ljh_test表中超過8分鍾的記錄
//date_add() 增加
//date_sub()減少
//month 月份 minute 分鍾 second 秒
//例如:select DATE_ADD(NOW(),INTERVAL 1 MONTH); //一個月后的時間
CREATE PROCEDURE test ()
BEGIN
delete from ljh_test WHERE create_date <= DATE_SUB(NOW(),INTERVAL 8 MINUTE);
END;
2.創建事件e_test,每30秒執行test()存儲過程
CREATE EVENT if not exists e_test
on schedule every 30 second
on completion preserve
do call test();
3.查看mysql中event_scheduler是否打開
show variables like 'event_scheduler'
如果在關閉狀態,需要打開它
set global event_scheduler=1;
啟動某事件任務
alter event e_test ON COMPLETION PRESERVE ENABLE;
關閉某事件任務
alter event e_test ON COMPLETION PRESERVE DISABLE;
刪除某事件
drop EVENT e_test
刪除某存儲過程
drop PROCEDURE test