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;

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章