MySQL创建事件调度器
MySQL中的事件调度器,可以用来执行定时任务。一、开启事件调度默认是关闭的,开启可执行。查看事件调度器是否开启:
1
2
SHOW VARIABLES LIKE 'event_scheduler';
SELECT @@event_scheduler;
开启事件调度器
SET GLOBAL event_scheduler=1;
SET GLOBAL event_scheduler=ON;
或者在my.ini文件中加上event_scheduler=1或者在启动命令后加上"-event_scheduler=1"
查看现有的事件调度器
1
show events;
查看事件调度器的状态
1
show processlist;
二、创建事件调度器
1
2
3
4
5
6
CREATE EVENT event_name
ON SCHEDULE schedule
PRESERVE]
DO sql_statement;
schedule:是执行计划,有两个选项,第一是在某一时刻执行,第二是从某时到某时每隔一段时间执行。 AT TIMESTAMP [+ INTERVAL INTERVAL] | EVERY INTERVAL AT TIMESTAMP [+ INTERVAL INTERVAL]:只在指定的时间点执行; EVERY INTERVAL :间隔多长时间执行;INTERVAL:时间间隔,可以精确到秒。 quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE | WEEK | SECOND | YEAR_MONTHevent_name:是你要创建的事件名称ON COMPLETION PRESERVE:结束后是否保存,默认不保存,一旦执行完,事件就被删除了,因此强烈建议此参数设为 ON COMPLETION PRESERVE。
DO sql_statement:可以是DML语句、DCL语句或者调用存储过程。三、修改事件调度器
1
2
3
4
5
6
ALTER EVENT event_name
PRESERVE]
四、事件调度器的例子例1:1分钟后添加数据
1
2
3
4
5
6
create event if not exists eve_test
ON SCHEDULE AT current_timestamp() + interval 1 minute
ON COMPLETION PRESERVE
do
insert into test_20161107(t_day)
values(now());
例2:更改成每隔1分钟添加数据
1
2
3
4
5
6
alter event eve_test
on schedule every 1 minute starts now()
on completion preserve
enable
do insert into test_20161107(t_day)
values(now());
修改之后使用show events 查看事件调度器的状态;例3:调用存储过程
1
2
3
4
5
alter event eve_test
on schedule every 1 minute starts now()
on completion preserve
enable
do call proc_test();
五、删除 DROP EVENT event_name;
页:
[1]