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,如需转载请自行联系原作者