Heim > Datenbank > MySQL-Tutorial > MySQL的事件调度器使用介绍_MySQL

MySQL的事件调度器使用介绍_MySQL

WBOY
Freigeben: 2016-06-01 13:00:04
Original
1166 Leute haben es durchsucht

MySQL的事件调度器使用介绍


自MySQL5.1.0起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务,可以看作基于时间的触发器。

一、开启

事件调度默认是关闭的,开启可执行

SET GLOBAL event_scheduler=1;

SET GLOBAL event_scheduler=ON;
Nach dem Login kopieren


或者在my.ini文件中加上event_scheduler=1

或者在启动命令后加上"-event_scheduler=1"

可以通过如下命令查看是否已开启事件调度器。

SHOW VARIABLES LIKE 'event_scheduler';

SELECT @@event_scheduler;
Nach dem Login kopieren


二、创建

CREATE EVENT [IF NOT EXISTS] event_name

 ON SCHEDULE schedule

 [ON COMPLETION [NOT] PRESERVE]

 [ENABLE | DISABLE]

 [COMMENT 'comment']

 DO sql_statement;

 

schedule:

 AT TIMESTAMP [+ INTERVAL INTERVAL]

 | EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]

 

INTERVAL:

 quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |

 WEEK | SECOND | YEAR_MONTH
Nach dem Login kopieren


event_name:是你要创建的事件名称

schedule:是执行计划,有两个选项,第一是在某一时刻执行,第二是从某时到某时每隔一段时间执行。

INTERVAL:时间间隔,可以精确到秒(http://www.lai18.com/content/433742.html)。

ON COMPLETION [NOT] PRESERVE:结束后是否保存,默认不保存,一旦执行完,事件就被删除了,因此强烈建议此参数设为 ON COMPLETION PRESERVE。

ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAY
Nach dem Login kopieren


是从现在起5日后执行

ON SCHEDULE AT TIMESTAMP '2012-03-07 12:00:00'
Nach dem Login kopieren


在某一具体时刻执行

ON SCHEDULE EVERY 1 DAY 

STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY

ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH
Nach dem Login kopieren


5天后开始每天执行,一个月后结束

CURRENT_TIMESTAMP可以用具体时间替换,比如'2012-03-06 18:00:00'

CREATE EVENT `NewEvent`

ON SCHEDULE EVERY 1 MONTH STARTS '2012-04-01 00:00:00' ENDS '2100-01-01 00:00:00'

ON COMPLETION PRESERVE

ENABLE

DO

update tb_test set amount=100 where id=2;;
Nach dem Login kopieren


这是一个完整的例子。

三、修改

ALTER EVENT event_name

 [ON SCHEDULE schedule]

 [RENAME TO new_event_name]

 [ON COMPLETION [NOT] PRESERVE]

 [COMMENT 'comment']

 [ENABLE | DISABLE] [DO sql_statement]
Nach dem Login kopieren


ALTER EVENT e_test DISABLE;
Nach dem Login kopieren


关闭e_test事件。

注意,一旦MySQL重启,Disable的事件将全部消失。

四、删除

DROP EVENT [IF EXISTS] event_name
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage