zoukankan      html  css  js  c++  java
  • mysql事件调度器使用

    --设置事件调度器 开启
    SET GLOBAL event_scheduler = ON;

    --查看事件调度器 是否开启 on开  off关
    SHOW VARIABLES LIKE 'event_scheduler';



    创建表:
    DROP TABLE IF EXISTS `szl`;
    CREATE TABLE `szl` (
      `id` int(20) NOT NULL AUTO_INCREMENT,
      `uname` varchar(20) DEFAULT NULL,
      `lastupdate` datetime DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;




    事件调度器 每10秒 向szl表插入数据:
    CREATE EVENT szl_evt_insert
    ON SCHEDULE EVERY 10 SECOND
    DO
    INSERT INTO szl(uname, lastupdate) VALUES('Jimmy Shan', NOW());

    说明:
    szl_evt_insert 事件名称
    EVERY 10 SECOND 每隔10秒执行
    DO  需要做的事



    -------------------------------------------------------------------------------
    mysql在每天指定时间执行的事物建立方法:
    DROP EVENT if EXISTS  事物名称;
    CREATE EVENT事物名称
    ON SCHEDULE EVERY 1 DAY
    STARTS '2014-06-25 18:50:00'
    DO  CALL  c managerloginsert;


    关键是STARTS '2014-06-25 18:50:00' 句  指定开始日期及时间 那么第二次执行是就会18:50:00开始
    想想为啥?因为这里ON SCHEDULE EVERY 1 DAY 指定一天 第一次开始执行的时间是18:50:00 下次再执行
    必须到一天 24小时 。



    -------------------------------------------------------------------------------
    5天后清空表记录:
    CREATE EVENT szl_evt_insert
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAY
    DO
    TRUNCATE TABLE szl;


    -------------------------------------------------------------------------------
    指定在2014-06-25 17:00:00清空表记录:
    CREATE EVENT szl_evt_insert
    ON SCHEDULE AT TIMESTAMP '2014-06-25 17:00:00'
    DO
    TRUNCATE TABLE szl;


    -------------------------------------------------------------------------------
    每天定时清空表:
    CREATE EVENT szl_evt_insert
    ON SCHEDULE EVERY 1 DAY
    DO
    TRUNCATE TABLE szl;


    -------------------------------------------------------------------------------
    5天后开启每天定时清空表:
    CREATE EVENT szl_evt_insert
    ON SCHEDULE EVERY 1 DAY
    STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
    DO
    TRUNCATE TABLE szl;


    -------------------------------------------------------------------------------
    每天定时清空表,5天后停止执行:
    CREATE EVENT szl_evt_insert
    ON SCHEDULE EVERY 1 DAY
    ENDS CURRENT_TIMESTAMP + INTERVAL 5 DAY
    DO
    TRUNCATE TABLE szl;


    -------------------------------------------------------------------------------
    5天后开启每天定时清空表,一个月后停止执行:
    CREATE EVENT szl_evt_insert
    ON SCHEDULE EVERY 1 DAY
    STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
    ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH
    DO
    TRUNCATE TABLE szl;

    [ON COMPLETION [NOT] PRESERVE]可以设置这个事件是执行一次还是持久执行,默认为NOT PRESERVE。



    -------------------------------------------------------------------------------
    每天定时清空表(只执行一次,任务完成后就终止该事件):
    CREATE EVENT szl_evt_insert
    ON SCHEDULE EVERY 1 DAY
    ON COMPLETION NOT PRESERVE
    DO
    TRUNCATE TABLE szl;

    [ENABLE | DISABLE]可是设置该事件创建后状态是否开启或关闭,默认为ENABLE。
    [COMMENT ‘comment']可以给该事件加上注释。





    -------------------------------------------------------------------------------
    修改事件(ALTER EVENT)
    ALTER EVENT event_name
    [ON SCHEDULE schedule]
    [RENAME TO new_event_name]
    [ON COMPLETION [NOT] PRESERVE]
    [COMMENT 'comment']
    [ENABLE | DISABLE]
    [DO sql_statement]
    1) 临时关闭事件

    ALTER EVENT e_test DISABLE;
    2) 开启事件

    ALTER EVENT e_test ENABLE;
    3) 将每天清空test表改为5天清空一次:

    ALTER EVENT e_test
    ON SCHEDULE EVERY 5 DAY;

    删除事件(DROP EVENT)
    语法很简单,如下所示:

    DROP EVENT [IF EXISTS] event_name
    例如删除前面创建的e_test事件

    DROP EVENT e_test;
    当然前提是这个事件存在,否则会产生ERROR 1513 (HY000): Unknown event错误,因此最好加上IF EXISTS

    DROP EVENT IF EXISTS e_test;

  • 相关阅读:
    Redis 之服务器集群配置
    Redis 之持久化(rdb、aof)
    Redis 之消息发布与订阅(publish、subscribe)
    Redis事物及锁的运用
    Redis 之hash集合结构及命令详解
    对Ul下的li标签执行点击事件——如何获取你所点击的标签
    .net 面试题(3)
    SQL Server 系统时间
    分布式内存对象缓存 memcached
    MVC 模板页和布局
  • 原文地址:https://www.cnblogs.com/jimmyshan-study/p/10775754.html
Copyright © 2011-2022 走看看