mysql-定时任务

系统 1861 0

mysql 定时任务从5.1版本开始引入,又叫做临时触发器,但是与普通触发器不同的是,普通触发器是通过操作数据表的每行数据而触发的事件,而它是通过时间点或者时间周期触发

先来看一下它的语法:

      
        DELIMITER $$




      
      
        --
      
      
         SET GLOBAL event_scheduler = ON$$     -- required for event to execute but not create    
      
      
        CREATE
      
      
        /*
      
      
        [DEFINER = { user | CURRENT_USER }]
      
      
        */
      
      
            EVENT   `event1`




      
      
        ON
      
      
         SCHEDULE

     
      
      
        /*
      
      
         uncomment the example below you want to use 
      
      
        */
      
      
        --
      
      
         scheduleexample 1: run once
      
      
        --
      
      
          AT 'YYYY-MM-DD HH:MM.SS'/CURRENT_TIMESTAMP { + INTERVAL 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...] }
      
      
        --
      
      
         scheduleexample 2: run at intervals forever after creation
      
      
        --
      
      
         EVERY 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...]
      
      
        --
      
      
         scheduleexample 3: specified start time, end time and interval for execution
      
      
        /*
      
      
        EVERY 1  [HOUR|MONTH|WEEK|DAY|MINUTE|...]



       STARTS CURRENT_TIMESTAMP/'YYYY-MM-DD HH:MM.SS' { + INTERVAL 1[HOUR|MONTH|WEEK|DAY|MINUTE|...] }



       ENDS CURRENT_TIMESTAMP/'YYYY-MM-DD HH:MM.SS' { + INTERVAL 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...] } 
      
      
        */
      
      
        /*
      
      
        [ON COMPLETION [NOT] PRESERVE]

[ENABLE | DISABLE]

[COMMENT 'comment']
      
      
        */
      
      
        



DO

    
      
      
        BEGIN
      
      
        

        (sql_statements)

    
      
      
        END
      
      
        $$



DELIMITER ;
      
    

基本上通过上面的语法说明已经了解到如何使用了,下面针对每种方式可以再写个小栗子

1,在某个时间点触发(执行一次):

      
        DELIMITER $$




      
      
        CREATE
      
      
             EVENT `bdhp`.`e_e1`




      
      
        ON
      
      
         SCHEDULE

        
      
      
        /*
      
      
        只执行一次
      
      
        */
      
      
        /*
      
      
        AT '2015-02-03 16:07.00'
      
      
        *//*
      
      
        某一时间点
      
      
        */
      
      
        /*
      
      
         AT '2015-02-03 16:47.20' + INTERVAL 40 second
      
      
        *//*
      
      
        某一时间点 + 一段时间
      
      
        */
      
      
        

        

         AT 
      
      
        CURRENT_TIMESTAMP
      
      
        +
      
       INTERVAL 
      
        40
      
       SECOND
      
        /*
      
      
        当前时间点 + 一段时间
      
      
        */
      
      
        

        

DO

    
      
      
        BEGIN
      
      
        INSERT
      
      
        INTO
      
       t_sys_log(sn)
      
        VALUES
      
      (
      
        '
      
      
        55555
      
      
        '
      
      
        );

    
      
      
        END
      
      
        $$



DELIMITER ;
      
    

2,按周期执行,无限次数

      
        DELIMITER $$




      
      
        CREATE
      
      
             EVENT `e_e2`




      
      
        ON
      
      
         SCHEDULE

    

       EVERY 
      
      
        1
      
      
         MINUTE

DO

    
      
      
        BEGIN
      
      
        INSERT
      
      
        INTO
      
       t_sys_log(sn)
      
        VALUES
      
      (
      
        '
      
      
        55555
      
      
        '
      
      
        );

    
      
      
        END
      
      
        $$



DELIMITER ;
      
    

3,在某一时间段内,按周期执行(ends 不写则表示从某一时间点开始执行)

      
        DELIMITER $$




      
      
        CREATE
      
      
             EVENT `e_e3`




      
      
        ON
      
      
         SCHEDULE

    EVERY 
      
      
        1
      
      
          SECOND



       STARTS 
      
      
        CURRENT_TIMESTAMP
      
      
        



       ENDS 
      
      
        '
      
      
        2015-02-03 16:15.00
      
      
        '
      
      
        



DO

    
      
      
        BEGIN
      
      
        INSERT
      
      
        INTO
      
       t_sys_log(sn,
      
        USER_NAME
      
      )
      
        VALUES
      
      (
      
        '
      
      
        test
      
      
        '
      
      ,
      
        '
      
      
        ttt-55
      
      
        '
      
      
        );

    
      
      
        END
      
      
        $$



DELIMITER ;
      
    

 

mysql-定时任务


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论