在實際開發中,我們常常需要在MySQL數據庫上定時執行一些任務,例如每天12點更新一些數據。
這里我們可以使用MySQL事件來實現定時任務。使用事件還需要確認你的MySQL是在啟用了事件調度器情況下的。
SHOW VARIABLES LIKE 'event_scheduler';
SET GLOBAL event_scheduler = ON;
接下來,我們通過如下代碼創建一個每天12點執行的事件:
CREATE EVENT myEvent
ON SCHEDULE EVERY '1' DAY
STARTS '2022-01-01 12:00:00'
DO
BEGIN
-- 執行任務的SQL語句
END;
可以看到,我們設置了事件的名稱為myEvent,指定了事件的執行時間是每天12點,同時在開始執行時間為2022年1月1日12點時開始執行。
在DO中可以編寫需要執行的任務SQL語句,例如更新某張表中的數據:
CREATE EVENT myEvent
ON SCHEDULE EVERY '1' DAY
STARTS '2022-01-01 12:00:00'
DO
BEGIN
UPDATE myTable SET status = 'vip' WHERE expired_time< NOW();
END;
每天12點,我們的事件就會自動執行,從而完成我們的任務。