語法:
-- SET GLOBAL event_scheduler = ON$$ 開啓事件
-- required for event to execute but not create 事件執行但不創建所需
-- event 後面是事件名稱
-- DEFINER = { user | CURRENT_USER } 是定義人
create /*[DEFINER = { user | CURRENT_USER }]*/ event `spring_boot_building`.`test`
on schedule
-- 例子1:執行一次
-- AT 'YYYY-MM-DD HH:MM.SS'/CURRENT_TIMESTAMP { + INTERVAL 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...] }
-- 使用 AT 關鍵字執行一次
-- 例子2:每隔一段時間執行一次
-- EVERY 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...]
-- 使用 EVERY 關鍵字執行一次
-- 例子3:指定開始時間、結束時間,在時間區間內每隔一段時間執行一次
-- 使用 EVERY 關鍵字指定時間間隔
/*EVERY 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...]
-- 使用 STARTS 關鍵字指定開始時間
STARTS CURRENT_TIMESTAMP/'YYYY-MM-DD HH:MM.SS' { + INTERVAL 1[HOUR|MONTH|WEEK|DAY|MINUTE|...] }
-- 使用 ENDS 關鍵字指定結束時間
ENDS CURRENT_TIMESTAMP/'YYYY-MM-DD HH:MM.SS' { + INTERVAL 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...] } */
-- [ON COMPLETION [NOT] PRESERVE]
-- 可選項,默認是ON COMPLETION NOT PRESERVE 即計劃任務執行完畢後自動drop該事件;ON COMPLETION PRESERVE則不會drop掉。
-- [ENABLE | DISABLE]
-- 設定event的狀態,默認ENABLE:表示系統嘗試執行這個事件。DISABLE:關閉該事情,可以用alter修改
-- [COMMENT 'comment']
-- 可選項,comment 用來描述event;相當註釋,最大長度64個字節。
do
begin
/* 在這裏寫SQL語句或者調用存儲過程 */
(sql_statements)
end$$
使用示例:
-- 創建事件每隔月12個清空一次charge_log表:
CREATE EVENT IF NOT EXISTS delete_log
ON SCHEDULE
EVERY 12 MONTH STARTS '2020-12-31 23:00:00'
DO
TRUNCATE TABLE charge_log;
-- 創建事件,每個月月底,把月銷置0:
CREATE EVENT IF NOT EXISTS delete_sale
ON SCHEDULE
EVERY 1 MONTH STARTS '2020-06-30 23:50:00'
DO
UPDATE pizza set sale=0;