Mysql 定時器

定時任務

  • 週期任務mysql

  • 查看命令sql

`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 down_goods()
begin
UPDATE df_goods_sku set `status` = 0  where `status`=1 and down_time < now();
end//
delimiter ;

刪除存儲過程

drop procedure dewn_goods;數據庫

上面的代碼說明:
  1. use test; 這個誰都知道,使用某個數據庫,這裏要強調的是存儲過程必定是對於某個數據庫而言的,因此必需要選中一個數據庫才能建立成功。
  2. delimiter // 這個是將mysql中以;(分號)結尾的規定修改成以//(雙斜槓)爲語句結束符,由於存儲過程裏能夠有多條sql 語句,裏面的sql語句都以;號結尾,若是回車了那麼系統會當作sql語句直接執行了,咱們但願的是先定義這一系列sql語句而先不執行,因此要改下操做結束符。固然你在改後必定要改回來,你們能夠看到最後一行有對應的修改回來的語句。
  3. 下面的是一塊兒輸入的,能夠知道分別是建立存儲過程test_proce(),名稱能夠隨便起的,而後是在begin –end之間是定義一系列sql語句的就能夠了,記住最後end結尾要以以前修改後的結尾符結束。
create procedure down_goods()
begin
UPDATE df_goods_sku set `status` = 0  where `status`=1 and down_time < now();
end//

建立定時任務

create event down_good
on schedule every 10 second
on completion preserve disable
do call down_goods();

刪除任務

drop event up_good;code

代碼說明:orm

  1. 上面爲總體代碼,敲完再寫分號
  2. 第一行create event day_event是建立名爲second_event的事件,注意此處沒有括號
  3. 第二行是建立週期定時的規則,本處的意思是每秒鐘執行一次
  4. 第三行on completion preserve disable是表示建立後並不開始生效。
  5. 第四行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 down_good on completion preserve enable; //開啓定時任務
alter event down_good on completion preserve disable;//關閉定時任務

、常見週期定時規則


  • 週期執行–關鍵字 EVERY事件

    1. 單位有:second,minute,hour,day,week(周),quarter(季度),month,yearit

    2. 如:io

      on schedule every 1 second //每秒執行1次
      on schedule every 2 minute //每兩分鐘執行1次
      on schedule every 3 day //每3天執行1次
  • 在具體某個時間執行–關鍵字 ATevent

    1. 如:form

      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

    1. 如:

      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天
相關文章
相關標籤/搜索