需要写一个定时任务,首先创建存储过程,然后定时执行存储过程。
创建存储过程update_maturity
delimiter $$
drop PROCEDURE if EXISTS update_maturity;
create PROCEDURE update_maturity()
begin
...
end $$
创建定时执行事件
delimiter $$
drop EVENT if exists UPDATETAG;
CREATE event if not exists UPDATETAG
-- --定时,每天10点执行一次
-- ON SCHEDULE EVERY 1 DAY STARTS timestamp '2018-08-02 10:00:00'
-- --测试每1分钟执行一次
ON SCHEDULE EVERY 60 SECOND
ON COMPLETION PRESERVE ENABLE
DO
BEGIN
-- CALL add_read_tag();
CALL update_maturity();
END $$
要保证事件可以执行,一定要开启事件调度器。查看是否开启事件调度器:
show variables like '%sche%';
如果没有开启,如下结果:
开启事件调度器命令:
set global event_scheduler=ON;
关闭事件调度器命令:
set global event_scheduler=OFF
真实的开发环境中,会遇到mysql服务重启或者断电的情况,此时则会出现事件调度器被关闭的情况,所有事件都不在起作用,要想解决这个办法,则需要在mysql.ini文件中加入event_scheduler = ON; 的语句