mysql事件的語法以及示例

語法:

-- 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;

 

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