MySQL實現數據自動定時清除

項目情況:

       今天項目中涉及到一個註冊問題,註冊的校驗碼需要定時刪除。(後來需求變了,採用SpringBoot自帶的方法來執行定時任務)

說明:我在這裏是根據註冊記錄表中的一個更新時間字段和數據庫當前時間進行比較,得出該記錄存在的時間。使用timstampdiff函數可以解決該問題。

具體sql如下:

#開啓event_scheduler sql指令

SHOW VARIABLES LIKE '%event_scheduler%';
SET GLOBAL event_scheduler = ON;  

#定義存儲過程
DELIMITER |
DROP PROCEDURE IF EXISTS delete_registcode |
CREATE PROCEDURE delete_registcode()
    BEGIN
      IF EXISTS(SELECT id FROM registinfo WHERE TIMESTAMPDIFF(MINUTE,lastupdatetime,NOW()) >= 15 ) THEN
--       UPDATE device SET state = FALSE WHERE id NOT IN (SELECT device_id FROM orderdetail WHERE NOW() < endtime);
       DELETE from registinfo where id in (select id from (SELECT id FROM registinfo WHERE TIMESTAMPDIFF(MINUTE,lastupdatetime,NOW()) >= 15)a ) ;
      END IF;
    END
|
DELIMITER;
#創建定時器,每間隔一秒調用一次存儲過程
DELIMITER |
DROP EVENT IF EXISTS event_remind_status |
CREATE EVENT  event_remind_status  
ON SCHEDULE EVERY 1 SECOND  DO  
BEGIN  
CALL delete_registcode();  
END |
DELIMITER;  
#啓動定時器
ALTER EVENT event_remind_status ON    
COMPLETION PRESERVE ENABLE;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章