zoukankan      html  css  js  c++  java
  • mysql事件学习

    1、开启或关闭事件

        1)查看事件是否开启(两种方式)

    SHOW VARIABLES LIKE 'event_scheduler';
    SELECT @@event_scheduler;

       2)开启mysql的事件(两种方式)

    SET GLOBAL event_scheduler = 1;
    SET GLOBAL event_scheduler = ON;

       3)关闭mysql的事件

    SET GLOBAL event_scheduler = OFF;
    SET @@global.event_scheduler = OFF;
    SET GLOBAL event_scheduler = 0;
    SET @@global.event_scheduler = 0;

    2、增删改事件语法

      1)增加(创建)事件

    CREATE
        [DEFINER = { user | CURRENT_USER }]
        EVENT
        [IF NOT EXISTS]
        event_name
        ON SCHEDULE schedule
        [ON COMPLETION [NOT] PRESERVE]
        [ENABLE | DISABLE | DISABLE ON SLAVE]
        [COMMENT 'comment']
        DO event_body;
     
    schedule:
        AT timestamp [+ INTERVAL interval] ...
         | EVERY interval
        [STARTS timestamp [+ INTERVAL interval] ...]
        [ENDS timestamp [+ INTERVAL interval] ...]
    interval:
      quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
                  WEEK | SECOND | YEAR_MONTH | DAY_HOUR |
    DAY_MINUTE |DAY_SECOND | HOUR_MINUTE |
    HOUR_SECOND | MINUTE_SECOND}

    参数详细说明:

    DEFINER: 定义事件执行的时候检查权限的用户。

    ON SCHEDULE schedule: 定义执行的时间和时间间隔。

    ON COMPLETION [NOT] PRESERVE: 定义事件是一次执行还是永久执行,默认为一次执行,即NOT PRESERVE。

    ENABLE | DISABLE | DISABLE ON SLAVE: 定义事件创建以后是开启还是关闭,以及在从上关闭。如果是从服务器自动同步主上的创建事件的语句的话,会自动加上DISABLE ON SLAVE。

    COMMENT 'comment': 定义事件的注释。

      2)更改事件

    ALTER
        [DEFINER = { user | CURRENT_USER }]
        EVENT event_name
        [ON SCHEDULE schedule]
        [ON COMPLETION [NOT] PRESERVE]
        [RENAME TO new_event_name]
        [ENABLE | DISABLE | DISABLE ON SLAVE]
        [COMMENT 'comment']
        [DO event_body]

      3)删除事件

    DROP EVENT [IF EXISTS] event_name;

    3、用法

      1)创建一个每隔3秒往test表中插入一条数据的事件,代码如下:

    CREATE EVENT IF NOT EXISTS test ON SCHEDULE EVERY 3 SECOND
    ON COMPLETION PRESERVE
    DO INSERT INTO test(id,t1) VALUES('',NOW());

      2)创建一个10分钟后清空test表数据的事件,代码如下:

    CREATE EVENT IF NOT EXISTS test
    ON SCHEDULE
    AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
    DO TRUNCATE TABLE test.aaa;

      3)创建一个在2012-08-23 00:00:00时刻清空test表数据的事件,代码如下:

    CREATE EVENT IF NOT EXISTS test
    ON SCHEDULE
    AT TIMESTAMP '2012-08-23 00:00:00'
    DO TRUNCATE TABLE test;

      4)创建一个从2012年8月22日21点45分开始到10分钟后结束,运行每隔3秒往test表中插入一条数据的事件,代码如下:

    CREATE EVENT IF NOT EXISTS test ON SCHEDULE EVERY 3 SECOND
    STARTS '2012-08-22 21:49:00' 
    ENDS '2012-08-22 21:49:00'+ INTERVAL  10 MINUTE
    ON COMPLETION PRESERVE
    DO INSERT INTO test(id,t1) VALUES('',NOW());

      5)创建一个从2012-08-22 00:00:00时刻开始运行,每隔1天调用一次存储过程,40天后结束,代码如下:

    CREATE EVENT test ON SCHEDULE EVERY 1 DAY
    STARTS '2012-08-22 00:00:00'
    ENDS '2012-08-22 00:00:00'+INTERVAL 40 DAY
    ON COMPLETION PRESERVE 
    DO CALL test_add();

    4、参考链接

    http://blog.chinaunix.net/uid-20639775-id-3323098.html

  • 相关阅读:
    使用 Scrapy 爬取股票代码
    基于python开发的股市行情看板
    基于django的视频点播网站开发
    一个基于php+mysql的外卖订餐网站(带源码)
    线性表概述及单链表的Java实现
    使用github pages搭建个人博客
    解决SpannableString在Android组件间传递时显示失效的问题
    Android进程间通信(一):AIDL使用详解
    Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)
    Linux创建普通用户
  • 原文地址:https://www.cnblogs.com/tombsky/p/3968797.html
Copyright © 2011-2022 走看看