MySql 创建定时器
-- 查看定时器状态;OFF=关闭,ON=开启 SHOW VARIABLES LIKE '%event_sche%' -- 开启定时器 SET GLOBAL event_scheduler=1 -- 以上的改法在数据库重启后将会恢复为原来状态,要想数据库重启后也可以让event_scheduler开启,则需要在配置文件my.ini的设置。修改如下,然后重启mysql服务即可。 -- [mysqld]event_scheduler=ON -- 删除存储过程 DROP PROCEDURE set_contract_user_combo_status_proce; -- 创建存储过程 DELIMITER $$ USE `you_db`$$ DROP PROCEDURE IF EXISTS `set_contract_user_combo_status_proce`$$ CREATE PROCEDURE `set_contract_user_combo_status_proce`() BEGIN UPDATE contract_user_combo_info SET update_time=NOW(),update_by='set_contract_user_combo_status_event',`is_valid` = 'N' WHERE `enable`='Y' AND is_valid = 'Y' AND end_time <= NOW(); END$$ DELIMITER ; -- 删除定时器 DROP event set_contract_user_combo_status_event; -- 创建定时器 DELIMITER $$ CREATE event set_contract_user_combo_status_event -- 下面这句的意思是:从2020-08-13 23:59:00开始每天23:59:00秒执行set_contract_user_combo_status_proce()存储过程 ON SCHEDULE EVERY 1 DAY STARTS '2020-08-13 23:59:00' ON COMPLETION PRESERVE DISABLE DO CALL set_contract_user_combo_status_proce(); $$ DELIMITER ; ALTER event set_contract_user_combo_status_event ON COMPLETION PRESERVE ENABLE; //开启定时任务 ALTER event set_contract_user_combo_status_event ON COMPLETION PRESERVE DISABLE;//关闭定时任务
-- 查看事件执行情况,其中LAST_EXECUTED字段会反映出相应的事件最近一次的执行时间
SELECT * FROM information_schema.EVENTS;