天天看點

Mariadb/Mysql event使用大全

SHOW VARIABLES LIKE 'event_scheduler';==>查詢是否開啟了event

SET GLOBAL event_scheduler = 1;==>開啟了event

設定event_scheduler一直為ON

在my.cnf或者my.ini中加上event_scheduler=1或mysqld ... --event_scheduler=1

DROP EVENT IF EXISTS event_name;==>但當一個事件正在運作中時,删除該事件不會導緻事件停止,事件會執行到完畢為止。

使用event時,注意在主庫上開啟定時器,從庫上關閉定時器,event觸發所有操作均會記錄binlog進行主從同步,從庫上開啟定時器很可能造成卡庫。切換主庫後之後記得将新主庫上的定時器打開。

CREATE EVENT [IFNOT EXISTS] event_name

ON SCHEDULE schedule  // AT TIMESTAMP [+ INTERVAL INTERVAL] | EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]  <code>INTERVAL 5 </code><code>DAY 5天後</code>

ON COMPLETION [NOT] PRESERVE]

[ENABLE | DISABLE]

[COMMENT 'comment']

DO sql_statement;

//每分鐘

DELIMITER //

CREATE event inserttable 

ON SCHEDULE EVERY 1 MINUTE               

DO INSERT INTO test VALUES(CURRENT_TIMESTAMP)

//

DELIMITER ;

//每天指定時間

ON SCHEDULE EVERY 1 DAY STARTS '2012-09-26 14:55:00'

ALTER EVENT inserttable DISABLE;==&gt;暫時停止

SHOW PROCESSLIST;==&gt;檢視id

SHOW EVENTS;==&gt;檢視資訊

SELECT * FROM mysql.event;==&gt;檢視詳細資訊

ALTER event inserttable ON SCHEDULE EVERY 1 DAY STARTS '2012-09-26 15:19:00';==&gt;修改

實際案例:

每個月的一号淩晨1 點執行:

CREATE  EVENT  NOT EXISTS  STAT

ON  SCHEDULE  EVERY  1  MONTH  STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY), INTERVAL 1 MONTH),INTERVAL 1 HOUR)

ON  COMPLETION  PRESERVE  ENABLE

DO

BEGIN

多個語句

END

     本文轉自whshurk 51CTO部落格,原文連結:http://blog.51cto.com/shurk/1746306,如需轉載請自行聯系原作者

繼續閱讀