mySQL event

检查有关配置:show variables like '%sche%';

1、开启配置

set global event_scheduler =1;

2、创建定时任务,每天执行1次(on completion preserve代表永久执行)

CREATE EVENT IF NOT EXISTS my_scheduler_task 

ON SCHEDULE EVERY 1 DAY 

on completion preserve

DO 

update orders set statusFlag=2;

show create event my_scheduler_task 

3、更改定时任务,5天执行1次

ALTER EVENT my_scheduler_task ON SCHEDULE EVERY 5 DAY;

4、开启事件

ALTER EVENT my_scheduler_task ENABLE;

5、关闭事件

ALTER EVENT my_scheduler_task DISABLE;

6、删除 事件

DROP EVENT IF EXISTS my_scheduler_task

如何设置执行的时间?

CREATE EVENT test_event ON SCHEDULE EVERY 1 DAY STARTS '2012-09-24 00:00:00' ON COMPLETION PRESERVE ENABLE DO CALL test_procedure();

EVERY 后面的是时间间隔,可以选 1 second,3 minute,5 hour,9 day,1 month,1 quarter(季度),1 year 

 

如果需要每天指定时间运行任务,那就需要指定开始时间和频次,如下所示:

create event shopCartCleanerListener 
on schedule every 1 day starts '2015-01-01 00:00:00'
on completion preserve 
enable 
do 
update shopCart set cart = null;

 

下面给几个实例:

从2013年1月13号0点开始,每天运行一次 

ON SCHEDULE EVERY 1 DAY STARTS '2013-01-13 00:00:00' 

从现在开始每隔九天定时执行:

 ON SCHEDULE EVERY 9 DAY STARTS NOW() ; 

每个月的一号凌晨1 点执行 :

on schedule every 1 month starts date_add(date_add(date_sub(curdate(),interval day(curdate())-1 day),interval 1 month),interval 1 hour); 

每个季度一号的凌晨1点执行 :

on schedule every 1 quarter starts date_add(date_add(date(concat(year(curdate()),'-',elt(quarter(curdate()),1,4,7,10),'-',1)),interval 1 quarter),interval 1 hour); 

每年1月1号凌晨1点执行:

 on schedule every 1 quarter starts date_add(date_add(date(concat(year(curdate()),'-',elt(quarter(curdate()),1,4,7,10),'-',1)),interval 1 quarter),interval 1 hour);

 

查看所有事件:

SHOW EVENTS

查看指定事件的详情:

elect name,body,definer,execute_at,interval_value,interval_field,created,last_executed ,status from mysql.event;

其中body列就是其执行的内容。

 

临时修改事件计划:

可以用脚本来实现
mysql event_scheduler
开启event_scheduler sql指令:
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;
相反,关闭event_scheduler指令:

SET GLOBAL event_scheduler = OFF;
SET @@global.event_scheduler = OFF;
SET GLOBAL event_scheduler = 0;
SET @@global.event_scheduler = 0;

修改配置以使服务器重启后生效:

vi /etc/my.cnf

在[mysqld]下添加一行event_scheduler=ON

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/doz/blog/508650

发布了143 篇原创文章 · 获赞 49 · 访问量 23万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览