MYSQL利用事件和存儲過程實現執行定時任務


比如有如下需求:刪除某個表中當前時間距離日期字段(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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM