【mysql】定時刪除數據

刪除三天前的數據的sql

DELETE FROM table WHERE created_on < DATE_SUB(CURDATE(),INTERVAL 3 DAY);

CURDATE() 返回當前日期

CURNOW() 返回當前datetime

INTERVAL 是mysql間隔值,用法爲INTERVAL expr unitINTERVAL 3 DAY表示三天的間隔

DATE_SUB(start_date,INTERVAL expr unit);

寫一個存儲過程

存儲過程相當於mysql的函數,它是存儲在數據庫服務器中的一組sql語句,通過調用這個函數的名稱來執行這些sql語句命令。

DELIMITER // 
create procedure del_data()
BEGIN
    DELETE FROM table WHERE created_on < DATE_SUB(CURDATE(),INTERVAL 3 DAY);
END//
DELIMITER ;

DELIMITER是分割符的意思,聲明存儲過程前將"//"聲明爲分隔符,這樣存儲過程中的“;”纔不會被當作分隔符處理。聲明結束後再還原分隔符。
存儲過程也可以帶參數,存儲過程名(參數)
在聲明存儲過程前要先用use database_name切換到想要應用的數據庫,否則存儲過程會應用到默認數據庫中

查看以及使用存儲過程

查看存儲過程

select * from mysql.proc where db=’數據庫名’;

使用存儲過程

call del_data()

寫一個事件

開啓事件調度器

SET GLOBAL event_scheduler = ON;

創建事件

create event del_event  
on schedule 
EVERY 1 day  
STARTS '2019-3-28 00:00:00'  
do call del_data()

從明天的零點開始,每隔一天執行del_data存儲過程

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