mysql定時任務和事件解決訂單自動更新狀態問題

問題描述:數據庫在訂單結束時自動更新訂單狀態
解決方案:定時任務+事件

#開啓event_scheduler sql指令
SHOW VARIABLES LIKE '%event_scheduler%';
SET GLOBAL event_scheduler = ON;  

#定義存儲過程
DELIMITER |
DROP PROCEDURE IF EXISTS update_device_status |
CREATE PROCEDURE update_device_status()
    BEGIN
      IF EXISTS(SELECT device_id FROM orderdetail WHERE NOW() < endtime ) THEN
      UPDATE device SET state = FALSE WHERE id NOT IN (SELECT device_id FROM orderdetail WHERE NOW() < endtime);
      END IF;
    END
|
DELIMITER; 
#創建定時器,每間隔一秒調用一次存儲過程
DELIMITER |
DROP EVENT IF EXISTS event_remind_status |
CREATE EVENT  event_remind_status  
ON SCHEDULE EVERY 1 SECOND  DO  
BEGIN  
CALL update_device_status();  
END |
DELIMITER;  
#啓動定時器
ALTER EVENT event_remind_status ON    
COMPLETION PRESERVE ENABLE;


參考文檔:1>文檔1    2>文檔2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章