zoukankan      html  css  js  c++  java
  • mysql-定时任务

    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 ;
  • 相关阅读:
    SharePoint和Reporting Services整合 样式问题
    SharePoint2010安装体验(二)
    Moss 文件夹审批
    Moss中的控件—PeoplePicker
    C# 温故而知新:Stream篇(—)
    Entity Framework框架Code First Fluent API
    C# 温故而知新:Stream篇(二)
    扩展RBAC用户角色权限设计方案
    常见C#面试试题
    Spring Cloud之Ribbon负载均衡(Spring Cloud 2020.0.3版)
  • 原文地址:https://www.cnblogs.com/china2k/p/4270436.html
Copyright © 2011-2022 走看看