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;


 

posted @ 2020-09-02 14:31  姜饼攻城狮  阅读(323)  评论(0编辑  收藏  举报