MySQL事件排程器 CREATE EVENT

2021-06-07 01:36:52 字數 2678 閱讀 4425

mysql事件排程器 create event

mysql從5.1開始支援event功能,有點類似於mssql的job,可以定時自動執行資料彙總。

【語法】

create

event [if 

notexists] event_name  

onschedule schedule  

[oncompletion [

not] preserve]  

[enable | disable]  

[comment 'comment'

]  do sql_statement;  

schedule:  

attimestamp

[+ interval interval]  

| every interval [starts timestamp

] [ends 

timestamp

]  interval:  

quantity   

其中,event_name:定時器名,

最大長度64個字元,若未指定,則預設為當前的mysql使用者名稱(不區分大小寫);

schedule:

限定執行時間;

on completion [not] preserve:表示是否需要迴圈復用這個event;

sql_statement:要執行的sql語句(也可以使用儲存過程代替傳統的sql語句);

comment:對該時間排程器的乙個注釋,最大長度64個字元;

【關閉事件】

alter

event event_name 

oncompletion preserve disable;  

【開啟事件】

alter

event event_name 

oncompletion preserve enable;  

【刪除事件】

drop

event [if exists] event_name  

【注意】:要使用定時器,mysql的常量global event_scheduler必須為on或者是1.

【範例】

1. 每天凌晨1點開始執行資料更新:

create

event [if 

notexists] e_testevent_1   

onschedule every 1 

daystarts date_add(date_add(curdate(), interval 1 

day), interval 1 

hour

)   

oncompletion preserve enable   

do  

update

_t_test 

setcol= 2 

where

validitydate < now();  

2. 每月第一天凌晨1點開始執行資料更新(使用儲存過程):

create

event e_testevent_2   

onschedule every 1 

month

starts date_add(date_add(date_sub(curdate(),interval 

day(curdate())-1 

day), interval 1 

month

),interval 1 

hour

)  on

completion preserve enable  

do  

begin

call p_testprocedurename();  

end

3. 每季度第一天凌晨1點開始執行資料更新:

create

event e_testevent_3    

onschedule every 1 quarter starts date_add(date_add(

date

( concat(

year

(curdate()),

'-',elt(quarter(curdate()),1,4,7,10),

'-',1)),interval 1 quarter),interval 2 

hour

)  on

completion preserve enable  

do  

update

_t_test 

setcol= 2 

where

validitydate < now();  

【一些event相關語句】

1. 檢視是否開啟定時器

show variables 

like

'%sche%'

;  

2. 開啟定時器 0:off 1:on

setglobal

event_scheduler = 1;  

mysql 事件排程器 MySQL事件排程器

一 建立排程器 將資料庫按自定義的時間週期觸發某種操作,類似linux下的crontab 例項 建立排程器後的每個1小時觸發一次 create event myevent on schedule at current timestamp interval 1 hour doupdate mysche...

MySQL事件排程器

事件排程器 event scheduler 可以定時執行某些特定任務,可以看做基於時間的觸發器.show variables like event scheduler select event scheduler set global event scheduler 1 show create ev...

MYSQL 事件排程器

要檢視當前是否已開啟事件排程器 show variables like event scheduler 開啟事件高度器 set global event scheduler 1 建立事件 語法 create event if not exists event name on schedule sch...