1. 程式人生 > >mysql實現定時器任務(業務場景每天統計訂單數)

mysql實現定時器任務(業務場景每天統計訂單數)

下面是定時器實現的程式碼(任務完全由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();//呼叫儲存過程