mysql實現定時器任務(業務場景每天統計訂單數)
阿新 • • 發佈:2019-02-15
下面是定時器實現的程式碼(任務完全由mysql完成)
//檢視event是否開啟(mysql重啟就預設關閉了--OFF代表關閉)
show variables like 'event_scheduler';
//如果沒有開啟的話執行下面的語句
set global event_scheduler='on'
//建立儲存過程(使用遊標來遍歷資料)
CREATE PROCEDURE timer()
BEGIN
DECLARE temp_id int(11) default 1;
DECLARE cur CURSOR FOR SELECT p.id FROM t_product p,t_order o WHERE p.commodity_number =o.pro_num AND o.isCount =0;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET temp_id = null;
OPEN cur;
FETCH cur INTO temp_id;
WHILE(temp_id is not null) DO
UPDATE t_product SET order_count= order_count+1 WHERE id=temp_id;
UPDATE t_order set isCount=1 WHERE isCount=0;
FETCH cur into temp_id;
END WHILE;
CLOSE cur;
END;
//建立事件()
CREATE EVENT IF NOT EXISTS event_test
ON SCHEDULE EVERY 8 SECOND//每八秒執行一次 這個時間自己根據需求設定
ON COMPLETION PRESERVE
DO CALL timer();//呼叫儲存過程