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

mysql事件学习

上一篇:SQL延时操作


下一篇:FIREDAC直连ORACLE数据库