您的当前位置:首页正文

Mysql定时器

2020-02-11 来源:客趣旅游网
Mysql定时器

定时任务

周期任务查看命令

`show variables like '%event_sche%';`

显⽰的event_scheduler为OFF时⽤以下命令开启

`set global event_scheduler=1;`

注意:以上的改法在数据库重启后将会恢复为原来状态,要想数据库重启后也可以让event_scheduler开启,则需要在配置⽂件my.ini的设置。修改如下,然后重启mysql服务即可。

`[mysqld]event_scheduler=ON //这⼀⾏加⼊mysqld标签下`

创建procedure(存储过程)

创建存储过程

use test;delimiter //

create procedure test_proce()begin

UPDATE df_goods_sku set `status` = 0 where `status`=1 and down_time < now();end//

delimiter ;

删除存储过程

drop procedure test_proce;

上⾯的代码说明:

1. use test; 这个谁都知道,使⽤某个数据库,这⾥要强调的是存储过程⼀定是对于某个数据库⽽⾔的,所以必须要选中⼀个数据库才能创建成功。

2. delimiter // 这个是将mysql中以;(分号)结尾的规定修改为以//(双斜杠)为语句结束符,因为存储过程⾥可以有多条sql 语句,⾥⾯的sql语句都以;号结尾,如果回车了那么系统会当做sql语句直接执⾏了,我们希望的是先定义这⼀系列sql语句⽽先不执⾏,所以要改下操作结束符。当然你在改后⼀定要改回来,⼤家可以看到最后⼀⾏有对应的修改回来的语句。

3. 下⾯的是⼀起输⼊的,可以知道分别是创建存储过程test_proce(),名称可以随便起的,然后是在begin –end之间是定义⼀系列sql语句的就可以了,记住最后end结尾要以之前修改后的结尾符结束。

create procedure test_proce()begin

UPDATE df_goods_sku set `status` = 0 where `status`=1 and down_time < now();end//

创建定时任务

create event test_proce

on schedule every 10 secondon completion preserve disabledo call down_goods();

删除任务

drop event up_good;代码说明:

1. 上⾯为整体代码,敲完再写分号

2. 第⼀⾏create event day_event是创建名为second_event的事件,注意此处没有括号3. 第⼆⾏是创建周期定时的规则,本处的意思是每秒钟执⾏⼀次

4. 第三⾏on completion preserve disable是表⽰创建后并不开始⽣效。

5. 第四⾏do call test_proce()是该event(事件)的操作内容,表⽰调⽤我们刚刚创建的test_proce()存储过程。查看定时任务event(事件),可以查看本机所有的事件

`SELECT event_name,event_definition,interval_value,interval_field,status FROM information_schema.EVENTS;`

开启已经创建好的event(事件)

alter event test_proce on completion preserve enable; //开启定时任务alter event test_proce on completion preserve disable;//关闭定时任务

、常见周期定时规则

周期执⾏–关键字 EVERY

1. 单位有:second,minute,hour,day,week(周),quarter(季度),month,year2. 如:

on schedule every 1 second //每秒执⾏1次on schedule every 2 minute //每两分钟执⾏1次on schedule every 3 day //每3天执⾏1次

在具体某个时间执⾏–关键字 AT1. 如:

on schedule at current_timestamp()+interval 5 day //5天后执⾏

on schedule at current_timestamp()+interval 10 minute //10分钟后执⾏on schedule at '2016-10-01 21:50:00' //在2016年10⽉1⽇,晚上9点50执⾏

在某个时间段执⾏–关键字STARTS ENDS1. 如:

on schedule every 1 day starts current_timestamp()+interval 5 day ends current_timestamp()+interval 1 month //5天后开始每天都执⾏执⾏到下个⽉底on schedule every 1 day ends current_timestamp()+interval 5 day //从现在起每天执⾏,执⾏5天

因篇幅问题不能全部显示,请点此查看更多更全内容