mysql设置定时任务

时间:2021-12-18 07:49:20

事件调度器(又称临时触发器)是myspl在5.1.6版本加入的新功能,类似于linux的crontable

在使用之前先要确认event_scheduler处于ON的状态

show variables like 'event_scheduler'; 

如果显示是OFF,就设置为ON

set global event_scheduler =ON; 


先定义一个procedure, test

CREATE PROCEDURE test () 
BEGIN
insert into test values(now());
END;

具体procedure的用法可以先参考procedure用法,回头再写一个详细具体的


定义event的语法

CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement;
[IF NOT EXISTS]选项可以让命令在不存在同名的event的时候才执行

[ON SCHEDULE]定义event执行的时间

[ON COMPLETION [NOT] PRESERVE]选项可以定义这个时间是循环还是执行一次就结束,默认是NOT PRESERVE(也就是默认值执行一次)

[ENABLE | DISABLE]选项设置是否暂时关闭

[COMMENT 'comment']为该event添加注释



然后定义一个定时任务 test_event

create event [if not exists] test_event 
on schedule every 30 second
do call test();

查看event

show events;

删除event

drop event [if exists] test_event;
如果event存在则执行,如果不存在就报错,加上if exists就不会有问题


修改event

alter event test_event 
on schedule every 20 second
do call test();
这样就将上面的那个event从30秒启动一次变成了20秒启动一次了




参考博客:mysql创建定时任务