您的位置:首页 > 数据库 > MySQL

在MySQL中创建事件调度

2014-04-14 09:05 302 查看
在MySQL5.5之后,可以创建事件调度,具体语法如下:

CREATE
    [DEFINER = { [code]user
| CURRENT_USER }]
EVENT
[IF NOT EXISTS]
event_name

ON SCHEDULE
schedule

[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SL***E]
[COMMENT '
comment
']
DO
event_body
;

schedule
:
AT
timestamp
[+ INTERVAL
interval
] ...
| EVERY
interval

[STARTS
timestamp
[+ INTERVAL
interval
] ...]
[ENDS
timestamp
[+ INTERVAL
interval
] ...]

interval
:
quantity
{YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
[/code]

例如:我计划从2014-04-14的17:28分开始每一个星期执行一个命令或事件,这里执行一个存储过程daily().



mysql>create event dodaily on schedule every 1 week starts '2014-04-14 17:28:00' on completion preserve enable do call daily();


查看调度器状态:

mysql>show events \G;

禁用某事件调度

mysql>alter event dodaily disable

重启某事件调度

mysql>alter event dodaily enable

删除某事件调度
mysql>drop event dodaily ;

在设置了事件调度后,还要确认MySQL的事件调度器是否有开启,默认是关闭的,用以下命令查询其状态

mysql>show variables like '%scheduler%';

+-----------------+-------+

| Variable_name | Value |

+-----------------+-------+

| event_scheduler | OFF |

+-----------------+-------+

1 row in set (0.00 sec)

开启事件调度器用以下命令:

mysql>set GLOBAL event_scheduler = 1;

mysql>show variables like '%scheduler%';

+-----------------+-------+

| Variable_name | Value |

+-----------------+-------+

| event_scheduler | ON |

+-----------------+-------+

但注意,当你重启MySQL服务时,事件调度器就会自动关闭,以上方法只是暂时开启,若想永久开启,就要修改MySQL的配置文件 (该文件,Linux的在/usr目录my..cnf下,Windows在其安装目录my-default.ini),打开配置文件,在[mysqld]增加以下配置

event_scheduler=ON

保存后,重启MySQL服务:service mysql restart, 那事件调度器就会永久开启了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: