首先說明需求,某個智能機柜有好多貨道,在貨道壞了的時候,就會將原本isbad=0的字段置為1,現在這個存儲過程的目的是,要將這個被置為1字段(同時滿足被置為1的時間距離現在已經超過兩天)的數據定時的置為0,以表示貨道又變好了
1. 數據庫開啟定時任務功能
SET GLOBAL event_scheduler = 1;2. 編寫創建存儲過程
-- ------------------------------ PRocedure structure for sp_road_status-- ----------------------------DROP PROCEDURE IF EXISTS `sp_road_status`;DELIMITER ;;CREATE PROCEDURE `sp_road_status`()BEGINUPDATE ecs_vend_road SET isbad = 0 WHERE isbad = 1 and bad_time>0 AND ADDDATE(DATE_FORMAT(bad_time,'%Y-%m-%d'),INTERVAL 2 DAY) <= CURRENT_DATE();END;;DELIMITER ;說明:isbad為狀態字段,bad_time為時間字段,當前時間大于bad_time+2天,并且isbad狀態為不正常時執行
編寫并創建定時任務
-- ------------------------------ Event structure for evt_road_status-- ----------------------------DROP EVENT IF EXISTS `evt_road_status`;DELIMITER ;;CREATE EVENT `evt_road_status` ON SCHEDULE EVERY 1 DAY STARTS '2016-05-31 00:00:00' DO CALL sp_road_status();;;DELIMITER ;說明:從2014-01-01 00:00:00開始每隔1天調用上面的存儲過程,間隔時間可以調整SECOND,HOUR,DAY
事件的開啟關閉命令
1) 臨時關閉事件
ALTER EVENT evt_road_status DISABLE;2) 開啟事件
ALTER EVENT evt_road_status ENABLE;新聞熱點
疑難解答