首页 / 数据库 / MySQL / MySQL的事件调度器使用介绍
自MySQL5.1.0起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务,可以看作基于时间的触发器。一、开启事件调度默认是关闭的,开启可执行SET GLOBAL event_scheduler=1;SET GLOBAL event_scheduler=ON;或者在my.ini文件中加上event_scheduler=1或者在启动命令后加上"-event_scheduler=1"可以通过如下命令查看是否已开启事件调度器。SHOW VARIABLES LIKE "event_scheduler";SELECT @@event_scheduler;二、创建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_MONTHevent_name:是你要创建的事件名称schedule:是执行计划,有两个选项,第一是在某一时刻执行,第二是从某时到某时每隔一段时间执行。INTERVAL:时间间隔,可以精确到秒(http://www.linuxidc.com/Linux/2015-06/119285.htm)。ON COMPLETION [NOT] PRESERVE:结束后是否保存,默认不保存,一旦执行完,事件就被删除了,因此强烈建议此参数设为 ON COMPLETION PRESERVE。ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAY是从现在起5日后执行ON SCHEDULE AT TIMESTAMP "2012-03-07 12:00:00"在某一具体时刻执行ON SCHEDULE EVERY 1 DAYSTARTS CURRENT_TIMESTAMP + INTERVAL 5 DAYENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH5天后开始每天执行,一个月后结束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 PRESERVEENABLEDOupdate tb_test set amount=100 where id=2;;这是一个完整的例子。三、修改ALTER EVENT event_name [ON SCHEDULE schedule] [RENAME TO new_event_name] [ON COMPLETION [NOT] PRESERVE] [COMMENT "comment"] [ENABLE | DISABLE] [DO sql_statement] ALTER EVENT e_test DISABLE;关闭e_test事件。注意,一旦MySQL重启,Disable的事件将全部消失。四、删除DROP EVENT [IF EXISTS] event_name 本文永久更新链接地址