1.事件是MySQL在相應的時刻調用的過程式數據庫對象。
2.一個事件只能調用一次,一個事件也可以週期性的調用,可以在特定的時間調用。
3.MySQL調度器負責調度事件,要創建事件必須打開調度器:
set global event_scheduler=true;
關閉調度器:
set global event_scheduler=false;
4.創建一個事件記錄表來記錄事件的執行:
create table event_invoke(event_name varchar(20),
event_start timestmap)
5.創建一個立即啓動的事件:
create event direct on schedule at now()
do insert into event_invoke values('direct',now());
創建一個在2016年3月1號上午11點執行的事件:
create event direct2 on schedule at '2016-03-01 11:00:00'
do insert into event_invoke values('direct_20160301',now());
創建一個每三天執行一次的事件:
create event direct3 on schedule at now()+interval 3 day
do insert into event_invoke values('threedays',now());
創建一個在下週日執行的事件:
create event_sunday on schedule at
case dayname(now())
when 'Sunday' then now() + interval 7 day
when 'Monday'then now() + interval 6 day
when 'Tuesday' then now() + interval 5 day
when 'Wednesday'then now() + interval 4 day
when 'Thursday'then now() + interval 3 day
when 'Friday'then now() + interval 2 day
when 'Saturday'then now() + interval 1 day
do insert into event_invoke values('next_sunday',now());
以上可以簡化爲:
create event next_sunday on schedule at
now()+interval (8-dayofweek(now())) day
do insert into event_invoke values('next_sunday',now());
創建一個明天上午10點執行的事件:
create event tomorrow10 on schedule at timestamp(curdate() + interval 1 day,'10:00:00') do insert into event_invoke values('tomorrow',now());
創建一個事件在3小時後啓動並且每2小時運行一次直到晚上11點:
create event every2hour on schedule every 2 hour
starts now()+3 hour ends curdate()+interval 23 hour
do insert into event_invoke values('every2hour',now());
創建一個事件,明天中午12點運行,並且每分鐘運行一次,一共運行6次:
create event sixtime on schedule every 1 minute
starts timestamp(curdate()+interval 1 day ,'12:00:00')
ends timestamp(curdate + interval 1 day,'12:00:00')+interval 5 minute do insert into event_invoke values('_sixtimes',now());
創建一個事件他在Sunday啓動並且持續後面的四個周:
create event fivesundays starts
case dayname(now())
when 'Sunday' then now()
when 'Monday'then now() + interval 6 day
when 'Tuesday' then now() + interval 5 day
when 'Wednesday'then now() + interval 4 day
when 'Thursday'then now() + interval 3 day
when 'Friday'then now() + interval 2 day
when 'Saturday'then now() + interval 1 day
end
ends case dayname(now())
when 'Sunday' then now()
when 'Monday'then now() + interval 6 day
when 'Tuesday' then now() + interval 5 day
when 'Wednesday'then now() + interval 4 day
when 'Thursday'then now() + interval 3 day
when 'Friday'then now() + interval 2 day
when 'Saturday'then now() + interval 1 day
end + interval 4 week
do insert into event_invoke values('next_4_sunday',now());
代碼來源:MySQL開發者SQL權威指南