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;==>暫時停止
SHOW PROCESSLIST;==>檢視id
SHOW EVENTS;==>檢視資訊
SELECT * FROM mysql.event;==>檢視詳細資訊
ALTER event inserttable ON SCHEDULE EVERY 1 DAY STARTS '2012-09-26 15:19:00';==>修改
實際案例:
每個月的一号淩晨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,如需轉載請自行聯系原作者