美文网首页MySQL
mysql定时器,创建定时任务

mysql定时器,创建定时任务

作者: 小柒的另一个世界 | 来源:发表于2019-10-11 12:56 被阅读0次

    查看定时器功能开启状态

    -- 查看定时器状态 OFF 表示关闭
    show variables like 'event%';
    
    -- 开启定时器,下面的二选都可以
    -- 尽量不要使用 OFF 和 ON 有时候会出现以下错误
    -- SET GLOBAL event_scheduler = OFF;
    -- 1231 - Variable 'event_scheduler' can't be set to the value of 'OFF;'
    SET GLOBAL event_scheduler = 1;
    
    -- 关闭定时器
    SET GLOBAL event_scheduler = 0;
    
    

    查看指定定时器状态

    -- 删除定时器
    DROP EVENT [IF EXISTS] event_name
    
    -- 关闭事件任务: eventName 定时器名称
    ALTER EVENT eventName ON COMPLETION PRESERVE DISABLE;
    
    -- 开启事件任务:
    ALTER EVENT eventName ON COMPLETION PRESERVE ENABLE;
    
    -- 查看事件任务:
    SHOW EVENTS ;
    
    

    创建测试表

    CREATE TABLE `test` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
      `type` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    

    定时器创建(定时器可以直接执行语句也可以执行存储过程的调用)

    -- 如果存在相同名称的定时器删除掉旧的
    drop event if exists timer_smile;
    -- 创建一个定时器 timer_smile
    -- 这里可以添加上判断是否存在
    -- 不存在的情况下就创建
    -- CREATE EVENT IF NOT EXISTS timer_smile
    CREATE EVENT  timer_smile
    -- 执行的条件 1秒钟执行一次
    ON SCHEDULE EVERY 1 SECOND
    -- 执行的条件 1分钟执行一次
    -- ON SCHEDULE EVERY 1 MINUTE
    -- 执行条件每天执行一次
    -- ON SCHEDULE EVERY 1 DAY
    
    -- 这里还可以设置从什么时间开始
    -- 5 天后开始执行
    -- STARTS CURRENT_TIMESTAMP+INTERVAL 5 DAY
    -- 这里也可以设置几小时 或者几分钟后开始执行
    -- STARTS CURRENT_TIMESTAMP+INTERVAL 5 MINUTE
    
    -- 某个时间执行
    -- ON SCHEDULE AT TIMESTAMP '2018-09-17 18:16:00'
    -- 五天后执行
    -- ON SCHEDULE AT CURRENT_TIMESTAMP+INTERVAL 5 DAY
    
    -- 可以设置到什么时间结束
    -- 五天后停止执行
    -- ENDS CURRENT_TIMESTAMP+INTERVAL 5 DAY
    -- 这个还可以设置为几小时或者几分钟后停止执行
    -- ENDS CURRENT_TIMESTAMP+INTERVAL 5 MINUTE
    
    -- 可以设置是否立即生效
    -- 设置定时任务创建后不立即开启
    -- DISABLE 表示的是关闭 , 默认是开启的
    ON COMPLETION NOT PRESERVE DISABLE
    -- 在条件内执行的操作
    -- 如果是存储过程的话调用方式为
    -- DO call 存储过程名称();
    -- 下面是直接执行语句
    DO INSERT `test`(`name`,`type`)VALUES(CURRENT_TIMESTAMP,'1');
    
    

    相关文章

      网友评论

        本文标题:mysql定时器,创建定时任务

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