首页 > 代码库 > MySQL创建事件调度器

MySQL创建事件调度器

  MySQL中的事件调度器,可以用来执行定时任务。

一、开启

  事件调度默认是关闭的,开启可执行。

  查看事件调度器是否开启:

    SHOW VARIABLES LIKE ‘event_scheduler‘;
  SELECT @@event_scheduler;

  开启事件调度器

  SET GLOBAL event_scheduler=1;

  SET GLOBAL event_scheduler=ON;


  或者在my.ini文件中加上event_scheduler=1

  或者在启动命令后加上"-event_scheduler=1"

    

  查看现有的事件调度器

   show events;

  查看事件调度器的状态

   show processlist;

二、创建事件调度器  

CREATE EVENT [IF NOT EXISTS] event_name
    ON SCHEDULE schedule
    [ON COMPLETION [NOT] PRESERVE]
    [ENABLE | DISABLE]
    [COMMENT ‘comment‘]
    DO sql_statement;

schedule:是执行计划,有两个选项,第一是在某一时刻执行,第二是从某时到某时每隔一段时间执行。

    AT TIMESTAMP [+ INTERVAL INTERVAL] | EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]

    AT TIMESTAMP [+ INTERVAL INTERVAL]:只在指定的时间点执行;

    EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]:间隔多长时间执行;

INTERVAL:时间间隔,可以精确到秒。

    quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |

    WEEK | SECOND | YEAR_MONTH

event_name:是你要创建的事件名称

ON COMPLETION [NOT] PRESERVE:结束后是否保存,默认不保存,一旦执行完,事件就被删除了,因此强烈建议此参数设为 ON COMPLETION PRESERVE。

DO sql_statement:可以是DML语句、DCL语句或者调用存储过程。

三、修改事件调度器

ALTER EVENT event_name
    [ON SCHEDULE schedule]
    [RENAME TO new_event_name]
    [ON COMPLETION [NOT] PRESERVE]
    [COMMENT ‘comment‘]
    [ENABLE | DISABLE] [DO sql_statement]

四、事件调度器的例子

例1:1分钟后添加数据

create event if not exists eve_test
    ON SCHEDULE AT current_timestamp() + interval 1 minute
    ON COMPLETION PRESERVE
    do
    insert into test_20161107(t_day)
    values(now());

例2:更改成每隔1分钟添加数据   

alter event eve_test
    on schedule every 1 minute starts now()
    on completion preserve
    enable
    do insert into test_20161107(t_day)
    values(now());

   修改之后使用show events 查看事件调度器的状态;

例3:调用存储过程

 alter event eve_test
    on schedule every 1 minute starts now()
    on completion preserve
    enable
    do call proc_test();

五、删除

   DROP EVENT [IF EXISTS] event_name;

    

本文出自 “三国冷笑话” 博客,请务必保留此出处http://myhwj.blog.51cto.com/9763975/1870202

MySQL创建事件调度器