定時任務
-
周期任務
-
查看命令
`show variables like '%event_sche%';`
- 顯示的event_scheduler為OFF時用以下命令開啟
`set global event_scheduler=1;`
- 注意:以上的改法在數據庫重啟后將會恢復為原來狀態,要想數據庫重啟后也可以讓event_scheduler開啟,則需要在配置文件my.ini的設置。修改如下,然后重啟mysql服務即可。
`[mysqld]event_scheduler=ON //這一行加入mysqld標簽下`
創建procedure(存儲過程)
創建存儲過程
use test;
delimiter //
create procedure test_proce()
begin
UPDATE df_goods_sku set `status` = 0 where `status`=1 and down_time < now();
end//
delimiter ;
刪除存儲過程
drop procedure test_proce;
上面的代碼說明:
- use test; 這個誰都知道,使用某個數據庫,這里要強調的是存儲過程一定是對於某個數據庫而言的,所以必須要選中一個數據庫才能創建成功。
- delimiter // 這個是將mysql中以;(分號)結尾的規定修改為以//(雙斜杠)為語句結束符,因為存儲過程里可以有多條sql 語句,里面的sql語句都以;號結尾,如果回車了那么系統會當做sql語句直接執行了,我們希望的是先定義這一系列sql語句而先不執行,所以要改下操作結束符。當然你在改后一定要改回來,大家可以看到最后一行有對應的修改回來的語句。
- 下面的是一起輸入的,可以知道分別是創建存儲過程test_proce(),名稱可以隨便起的,然后是在begin –end之間是定義一系列sql語句的就可以了,記住最后end結尾要以之前修改后的結尾符結束。
create procedure test_proce()
begin
UPDATE df_goods_sku set `status` = 0 where `status`=1 and down_time < now();
end//
創建定時任務
create event test_proce
on schedule every 10 second
on completion preserve disable
do call down_goods();
刪除任務
drop event up_good;
代碼說明:
- 上面為整體代碼,敲完再寫分號
- 第一行create event day_event是創建名為second_event的事件,注意此處沒有括號
- 第二行是創建周期定時的規則,本處的意思是每秒鍾執行一次
- 第三行on completion preserve disable是表示創建后並不開始生效。
- 第四行do call test_proce()是該event(事件)的操作內容,表示調用我們剛剛創建的test_proce()存儲過程。
查看定時任務event(事件),可以查看本機所有的事件
`SELECT event_name,event_definition,interval_value,interval_field,status FROM information_schema.EVENTS;`
開啟已經創建好的event(事件)
alter event test_proce on completion preserve enable; //開啟定時任務
alter event test_proce on completion preserve disable;//關閉定時任務
、常見周期定時規則
-
周期執行–關鍵字 EVERY
-
單位有:second,minute,hour,day,week(周),quarter(季度),month,year
-
如:
on schedule every 1 second //每秒執行1次 on schedule every 2 minute //每兩分鍾執行1次 on schedule every 3 day //每3天執行1次
-
-
在具體某個時間執行–關鍵字 AT
-
如:
on schedule at current_timestamp()+interval 5 day //5天后執行 on schedule at current_timestamp()+interval 10 minute //10分鍾后執行 on schedule at '2016-10-01 21:50:00' //在2016年10月1日,晚上9點50執行
-
-
在某個時間段執行–關鍵字STARTS ENDS
-
如:
on schedule every 1 day starts current_timestamp()+interval 5 day ends current_timestamp()+interval 1 month //5天后開始每天都執行執行到下個月底 on schedule every 1 day ends current_timestamp()+interval 5 day //從現在起每天執行,執行5天
-