問題描述:數據庫在訂單結束時自動更新訂單狀態
解決方案:定時任務+事件
#開啓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;