MySQL 定時器EVENT學習

2022-09-16 22:06:21 字數 2737 閱讀 4251

mysql 定時器event學習

mysql從5.1開始支援event功能,類似oracle的job功能。有了這個功能之後我們就可以讓mysql自動的執行資料彙總等功能,不用像以前需要操作的支援了。如linux  crontab功能 。

建立測試表

create table t

(v varchar(100) not null

) engine innodb default charset=utf8;

建立定時器

呼叫的儲存過程

delimiter $$

drop procedure if exists e_test $$

create procedure e_test()

begin

insert into t values('1');

end $$

delimiter ;

要使定時起作用

mysql的常量global event_scheduler必須為on或者是1

-- 檢視是否開啟定時器

show variables like '%sche%'; 

-- 開啟定時器 0:off 1:on

set global event_scheduler = 1; 

-- 建立事件

--每隔一秒自動呼叫e_test()儲存過程

create event if not exists event_test

on schedule every 1 second

on completion preserve  

do call e_test();

-- 開啟事件

alter event event_test on   

completion preserve enable;  

-- 關閉事件

alter event event_test on   

completion preserve disable;

select * from t;

一些例子:

1

從現在開始每隔九天定時執行

2create

event event134

onschedule every

9day

starts now()5on

completion preserve enable6do

7begin

8call total();

9end

1011

1213

14每個月的一號凌晨1 點執行

15create

event event2

1617

onschedule every

1month

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

day(curdate())-1

day), interval

1month

),interval

1hour)

18on

completion preserve enable

19do

20begin

21call stat();

22end

2324

2526

每個季度一號的凌晨2點執行

2728

create

event total_season_event

2930

onschedule every

1quarter starts date_add(date_add(date( concat(

year

(curdate()),'-

',elt(quarter(curdate()),1,

4,7,

10),'-

',1)),interval

1quarter),interval

2hour)

31on

completion preserve enable

32do

33begin

34call season_stat();

35end

3637

3839

40每年1月1號凌晨四點執行

41create

event total_year_event

4243

onschedule every

1year

starts date_add(date(concat(

year

(curdate()) +1

,'-'

,1,'

-',1

)),interval

4hour)

44on

completion preserve enable

45do

46begin

47call year_stat();

48end

49

mysql的event和oralce的job還是有點不同的,這點讓筆者比較困擾

在進行按月,季,年進行自動呼叫儲存過程 時,為了測試可以 把系統改為年的最後一天,如2010-12-31 23:59:55;

這個oracle的job就會把月,季,年儲存過程執行一遍。但mysql改了系統時間了event也沒有定時執行。不知道各位大蝦有沒有什麼好辦法?可以解決這個問題。

MySQL 定時器EVENT學習

mysql從5.1開始支援event功能,類似oracle的job功能。有了這個功能之後我們就可以讓mysql自動的執行資料彙總等功能,不用像以前需要操作的支援了。如linux crontab功能。建立測試表 create table t v varchar 100 not null engine ...

MySQL 定時器EVENT學習

原文 mysql 定時器event學習 mysql從5.1開始支援event功能,類似oracle的job功能。有了這個功能之後我們就可以讓mysql自動的執行資料彙總等功能,不用像以前需要操作的支援了。如linux crontab功能。建立測試表 create table t v varchar ...

mysql建立定時器(event)

mysql建立定時器 event 步驟。1 select version 檢視當前使用的mysql版本。2 showvariables like sche 檢視是否開啟event與開啟event。event功能預設是關閉的,可以使用上面的語句來看event的狀態,如果是off或者0,表示是關閉的。3...