Mysql 定時器 根據訂單的不同的狀態進行超時判斷並且修改

說一下邏輯,

每分鐘遍歷一下訂單表內的所有數據,當狀態爲'未支付'下,已經20分鐘後就超時,並且改爲‘已超時’,

待發貨下,已經3小時後就超時,並且改爲‘已超時’

先創建存儲過程

create procedure order_checked()
begin
update order set STATUS='已超時',updateDate=now() where STATUS in ('未支付','已發貨','待確認') and  
if(STATUS='未支付',createDate<(select date_sub(now(), interval 20 MINUTE)), --20分鐘
if(STATUS='已發貨',updateDate<(select date_sub(now(), interval 3 hour)),    --3小時
if(STATUS='待確認',updateDate<(select date_sub(now(), interval 2 hour)),1=2))); --2小時
end

創建定時器

ALTER EVENT cyEvent
ON  SCHEDULE EVERY 60 SECOND STARTS now() 
ON COMPLETION PRESERVE ENABLE
do call cy_order_checked();

後面打開定時器就可以了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章