mysql 定時器概念 Mysql 定時器

2021-10-13 00:08:49 字數 2616 閱讀 7417

定時任務

週期任務

檢視命令

`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' //在2023年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天

mysql 定時器概念 MySQL定時器

mysql定時器 建立測試表 create table t v varchar 100 not null engine innodb default charset utf8 建立定時器 呼叫的儲存過程 delimiter drop procedure if exists e test create...

mysql 定時器概念 MySQL 定時器

mysql定時器是系統給提供了event,而oracle裡面的定時器是系統給提供的job。廢話少說,下面建立表 create table mytable id int auto increment not null,name varchar 100 not null default introduc...

mysql定時器 教程 Mysql 定時器

定時任務 週期任務 檢視命令 show variables like event sche 顯示的event scheduler為off時用以下命令開啟 set global event scheduler 1 注意 以上的改法在資料庫重啟後將會恢復為原來狀態,要想資料庫重啟後也可以讓event s...