mysql事件是一个可以定时(确定时间或者周期性)的执行指定程序代码的功能。
开启
Mysql必须是5.1以上版本,然后检测事件功能是否开启:ON/OFF
SHOW VARIABLES LIKE 'event_scheduler';
如果是OFF,说明该功能没有开启,开启方式:
SET GLOBAL event_scheduler = ON;
注意:上面的sql语句方式只是临时开启,mysql重启后状态又会变为OFF,若想永久开启,必须在my.cnf文件(win中my.ini)中增加 event_scheduler=ON ,然后重启mysql。
关闭
SET GLOBAL event_scheduler = OFF;
语法
CREATE
EVENT
event_name # event_name:自定义事件名称
ON SCHEDULE schedule # schedule:定义事件执行时间
[ON COMPLETION [NOT] PRESERVE] # (可选)事件执行完后是否保存,默认保存 ON COMPLETION PRESERVE,执行完删除 ON COMPLETION NOT PRESERVE
[ENABLE | DISABLE | DISABLE ON SLAVE] #(可选)启用 | 禁用 | 如果是从服务器自动同步主上的创建事件的语句的话,会自动加上DISABLE ON SLAVE。
[COMMENT comment] #(可选) comment: 事件注释(注释用引号引起来)
DO event_body; # event_body:事件执行主体
实例
在 2019-06-11 09:31:00 清空user表
DELIMITER $$
CREATE EVENT `eventname`
ON SCHEDULE AT '2019-06-11 09:31:00'
ON COMPLETION PRESERVE
ENABLE
COMMENT 'This is a try event!'
DO
BEGIN
TRUNCATE TABLE `ttt`;
END$$
DELIMITER ;
事件执行时间举例:
ON SCHEDULE AT CURRENT_TIMESTAMP # 当前时间立刻执行
ON SCHEDULE EVERY 1 SECOND #一秒执行一次(MINUTE/HOUR)
ON SCHEDULE EVERY 1 DAY # 每天定时执行
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAY # 5天以后执行一次
ON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY # 5天后开启每天定时执行
ON SCHEDULE EVERY 1 DAY ENDS CURRENT_TIMESTAMP + INTERVAL 5 DAY # 5天后停止每天定时执行
ON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH #5天后开启每天定时执行,一个月后停止