美文网首页
时间定时器

时间定时器

作者: F的平方 | 来源:发表于2019-06-12 13:48 被阅读0次


    正文


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

    相关文章

      网友评论

          本文标题:时间定时器

          本文链接:https://www.haomeiwen.com/subject/btxlfctx.html