目的
定时对数据库进行一些操作,如定期保存历史数据、定期清空无用数据
步骤
- 创建存储过程
CREATE PROCEDURE p_timer()
BEGIN
UPDATE userinfo SET endtime = now() WHERE id = '110';
END;
- 创建事件
#查看当前是否已开启事件调度器
SHOW VARIABLES LIKE 'event_scheduler';
#使用事件功能之前必须确保event_scheduler已开启
SET GLOBAL event_scheduler = 1;
#创建事件(CREATE EVENT) 每个月的一号凌晨2 点执行STAT()存储过程
CREATE EVENT IF NOT EXISTS event_timer
ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY), INTERVAL 1 DAY),INTERVAL 2 HOUR)
ON COMPLETION PRESERVE ENABLE
DO CALL p_timer();
- 扩展1
#关闭定时任务
ALTER EVENT event_timer ON COMPLETION PRESERVE DISABLE;
#开启时间任务
ALTER EVENT event_timer ON COMPLETION PRESERVE ENABLE;
#每30秒执行任务
on schedule every 30 second
#每一分钟执行任务,开始时间写好日期和时间
on schedule every 1 minute starts timestamp '2016-08-08 01:00:00'
#每一小时执行任务,开始时间写好日期和时间
on schedule every 1 hour starts timestamp '2016-08-08 01:00:00'
#每天凌晨一点执行,开始时间写好日期和时间
on shcedule every 1 day starts '2016-08-08 01:00:00'