1. 程式人生 > 實用技巧 >mysql定時刪除資料

mysql定時刪除資料

刪除三天前的資料的sql

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

CURDATE() 返回當前日期

CURNOW() 返回當前datetime

INTERVAL 是mysql間隔值,用法為INTERVAL expr unit。INTERVAL 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儲存過程

原文連結:https://www.cnblogs.com/luozx207/p/10607696.html

參考連結:https://blog.51cto.com/6300167/2435356