时间定时器



正文


SET GLOBAL event_scheduler = on;

delimiter //

drop procedure if exists validity_code//

create procedure validity_code()

begin

update BO_EU_SUPPLIER_RECOMMEND set RECOMMEND_CODE_STATE=4 where RECOMMEND_CODE_STATE=2 and RECOMMEND_CODE_EXPIRE<now();

end

//

delimiter ;

drop event if exists validity_event;

create event validity_event

on schedule every 1 second

on completion preserve disable

do call validity_code();

alter event validity_eventon completion preserve enable;






1.查看是否开启event与开启event。


1.1、MySQL event功能默认是关闭的,可以使用下面的语句来看event的状态,如果是OFF或者0,表示是关闭的。


            show VARIABLES LIKE '%sche%';

1.2、开启event功能

            SET GLOBAL event_scheduler = on;

2.创建定时器的过程

2.1、创建event要调用的存储过程validity_code

delimiter //

drop procedure if exists validity_code//

create procedure validity_code()

begin

update BO_EU_SUPPLIER_RECOMMEND set RECOMMEND_CODE_STATE=4 where RECOMMEND_CODE_STATE=2 and RECOMMEND_CODE_EXPIRE<now();

end 

//

delimiter ;

2.4、创建事件test_event(其作用:每隔一秒自动调用test_proce()存储过程)

drop event if exists validity_event;

create event validity_event

on schedule every 1 second

on completion preserve disable

do call validity_code();

2.5、开启事件test_event

alter event validity_eventon completion preserve enable;

2.6、关闭事件test_event

alter event validity_event on completion preserve disable;

2.7、查看表test

select * from BO_EU_SUPPLIER_RECOMMEND;


3.查看自己创建的event

如果要查看更加详细的信息,你需要root用户的授权,如果是你自己的数据库你可以用下面语句查看

select * from  mysql.event;

下面的我的event的查看结果



4.event的时间设置

设置event很简单,但是麻烦的是如何设置执行的时间,网上找了一些,自己总结了一下。

先看语句,如下面这个

     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 

从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);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,448评论 0 10
  • 存储数据的格式:json,xml var a = 10; var b = 20; [10,20]; key-val...
    钱钱_e3a6阅读 612评论 0 0
  • mysqldump 只导出数据库表结构mysqldump --opt -h 主机名或地址 -d 数据库名 -u r...
    BlockGeeks阅读 1,139评论 0 49
  • 任务需求:定时执行的任务,调用存储过程,进行数据迁移。 存储过程相关总结:(存储过程的创建 不能伴随有if exi...
    时待吾阅读 3,129评论 0 4
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,505评论 0 13