Mysql 定时任务 事件处理存储过程详解

创建定时器事件,可以通过sql创建,也可以安装Navicat Premiummysql客户端)创建。

工具创建:


(注:sql设置的命令可以在查询里面拷贝过去,然后在点击左上部分运行按钮即可执行!)

查看当前是否已开启事件计划(调度器)有3种方法:

1)     SHOW VARIABLES LIKE 'event_scheduler';

2)     SELECT @@event_scheduler;

3)     SHOW PROCESSLIST;

开启事件计划(调度器)开关有4种方法:重启就会销毁

1)     SET GLOBAL event_scheduler = 1;

2)     SET @@global.event_scheduler = 1;

3)     SET GLOBAL event_scheduler = ON;

4)     SET @@global.event_scheduler = ON;


1

Mysql 定时任务 事件处理存储过程详解_第1张图片


2

Mysql 定时任务 事件处理存储过程详解_第2张图片


如图中所示,call关键字后是需要执行的函数或者存储过程;状态表示定时器事件的状态,

是否启用,enable表示启用,disable表示不启用,

可以手动设置也可以通过sql来进行设置;on completion设置为PRESERVE


Mysql 定时任务 事件处理存储过程详解_第3张图片

计划中标签中,主要是设置定时器的频率和开始结束时间。AT表示(只会执行一次),从当前mysql数据库时间开始(这个时间是从启用开始,即当状态为“ENABLE”时),根据一定频率的执行;EVERY(重复执行)是自定义开始时间和结束时间;相对来书EVERY比较灵活,使用方便。


关于every 最右边的下拉框是可以选择其他的有每分钟的每小时的还有没秒的,详细的给大家列出来

   SECOND 秒 SECONDS 
 MINUTE 分钟 MINUTES 
 HOUR 时间 HOURS 
 DAY 天 DAYS 
 MONTH 月 MONTHS 
 YEAR 年 YEARS 

 MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS" 

 HOUR_SECOND 小时分钟, "HOURS:MINUTES:SECONDS" 

 HOUR_MINUTE 小时和分钟 "HOURS:MINUTES" 
 DAY_HOUR 天和小时 "DAYS HOURS" 
 YEAR_MONTH 年和月 "YEARS-MONTHS" 
 DAY_MINUTE 小时分钟 "DAYS HOURS:MINUTES" 
 DAY_SECOND 小时分钟秒 "DAYS HOURS:MINUTES:SECONDS"

另外上述的定时怎么分配有的人也会搞不清楚:当时我也有过疑惑,例如我想定时执行一个sql,时间是每一日的12点 30分,或者是其他的时间段,上述的 秒,分钟 时,天,月,日,

 其实只要你设定了值,在navicat 上保持默认是当前的时间,当然你也可以自己定义,然后这个开始时间很重要,例如一分钟,那么就是同这个开始时间计时1分钟就执行,回到刚才的问题.其实我也可以通过时分秒或者是天来设置啊,比如一天24小时如果分钟算的话充开始时间到下一次的执行时间算一个分钟填上不就可以了吗,这是我最早开始引用的,当然根据上述问题还可以通过 小时分钟 也就是选择HOUR_MINUTE 参数  定一个 时间 比如12:30 然后通过开始时间就算每天的12:30 就可以执行你的定时任务了.依次类推我想其他的时间格式你对应不同的功能需求你应该会得心应手了.

1)通过sql创建定时器事件:

create event if not existseventJob 
on schedule every 2 second STARTS '2015-11-25 00:00:00'
on completion PRESERVE 

ENABLE
do callmypro();

上述sql脚本中"eventJob "为定时器事件名称,"mypro"mysql函数或者存储过程。sql脚本表示从 '2015-07-25 00:00:00'开始,每2秒钟执行mypro()函数一次。当然也可以设置结束时间。



你可能感兴趣的:(mysql)