mysql定時刪除數據

刪除三天前的數據的sql

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

CURDATE() 返回當前日期mysql

CURNOW() 返回當前datetimesql

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切換到想要應用的數據庫,不然存儲過程會應用到默認數據庫中code

查看以及使用存儲過程

查看存儲過程事件

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

使用存儲過程it

call del_data()

寫一個事件

開啓事件調度器event

SET GLOBAL event_scheduler = ON;

建立事件table

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

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

相關文章
相關標籤/搜索