MySQL中的事件

2021-10-23 09:04:03 字數 4069 閱讀 5181

實踐參考

mysql5.1版本開始引進event概念,mysql 中的事件(event:時間觸發器)是用於執行定時或週期性的任務,類似linux中的crontab,但是後者只能精確到分鐘,事件可以精確到秒。通過單獨或呼叫儲存過程使用,在某一特定的時間點,觸發相關的sql語句或儲存過程。事件由乙個特定的執行緒來管理的,也就是所謂的事件排程器,但是事件不能直接呼叫。

mysql中排程器event_scheduler負責呼叫事件,也就是由全域性變數event_scheduler的狀態決定,它預設是off, 一般是off。

show variables like

'%event_scheduler%';+

-----------------+-------+

| variable_name |

value|+

-----------------+-------+

| event_scheduler |

off|

+-----------------+-------+

開啟的方法:set global event_scheduler=1,關閉當然就是賦值為0了。

建立事件

delimiter $$
– set global event_scheduler = on$$

– required for event to execute but not create 事件執行但不建立所需

– event 後面是事件名稱

– definer = 是定義人

create

/[definer = ]/ event

spring_boot_building

.`test

on schedule

/* uncomment the example below you want to use /

/ 取消注釋下面要使用的示例 */

– scheduleexample 1: run once

– 例子1:執行一次

– at 『yyyy-mm-dd hh:mm.ss』/current_timestamp

– 使用 at 關鍵字執行一次,使用時把上面注釋放開即可

– scheduleexample 2: run at intervals forever after creation

– 例子2:每隔一段時間執行一次

– every 1 [hour|month|week|day|minute|…]

– 使用 every 關鍵字執行一次,使用時把上面注釋放開即可

– scheduleexample 3: specified start time, end time and interval for execution

– 例子3:指定開始時間、結束時間,在時間區間內每隔一段時間執行一次

– 使用 every 關鍵字指定時間間隔

/*every 1 [hour|month|week|day|minute|…]

– 使用 starts 關鍵字指定開始時間

starts current_timestamp/『yyyy-mm-dd hh:mm.ss』

– 使用 ends 關鍵字指定結束時間

ends current_timestamp/『yyyy-mm-dd hh:mm.ss』 */

– [on completion [not] preserve]

– 可選項,預設是on completion not preserve 即計畫任務執行完畢後自動drop該事件;on completion preserve則不會drop掉。

– [enable | disable]

– 設定event的狀態,預設enable:表示系統嘗試執行這個事件。disable:關閉該事情,可以用alter修改

– [comment 『comment』]

– 可選項,comment 用來描述event;相當注釋,最大長度64個位元組。 do

begin

/* 在這裡寫sql語句或者呼叫儲存過程 */

(sql_statements)

end$$

delimiter

;上面的英文注釋已經寫得很清楚,我這裡把英文翻譯一下。

檢視事件

檢視當前所在庫的事件:

show events;

啟用和禁用
alter event event_name disable

;alter event event_name enable

;

event_name:事件名稱

刪除事件

drop event [

ifexists

] event_name

event_name:事件名稱

我們來寫乙個每隔5秒中就向table1插入當前時間的事件

資料庫如下:

我們主要看table1這張表。

sql 如下:

delimiter $$
create

definer

=current_user eventspring_boot_building.

insert_currenttime_in_table1

on schedule

– 每隔5秒中就向table1插入當前時間

every 5

second

on completion preserve

enable

comment

『每隔5秒中就向table1插入當前時間的事件』 do

begin

insert

into

table1values

(null

,now()

);end$$

delimiter

;執行此sql之後,發現事件建立成功:

事件正常執行

實踐參考

mysql5.1版本開始引進event概念,mysql 中的事件(event:時間觸發器)是用於執行定時或週期性的任務,類似linux中的crontab,但是後者只能精確到分鐘,事件可以精確到秒。通過單獨或呼叫儲存過程使用,在某一特定的時間點,觸發相關的sql語句或儲存過程。事件由乙個特定的執行緒來管理的,也就是所謂的事件排程器,但是事件不能直接呼叫。

mysql中排程器event_scheduler負責呼叫事件,也就是由全域性變數event_scheduler的狀態決定,它預設是off, 一般是off。

show variables like

'%event_scheduler%';+

-----------------+-------+

| variable_name |

value|+

-----------------+-------+

| event_scheduler |

off|

+-----------------+-------+

開啟的方法:set global event_scheduler=1,關閉當然就是賦值為0了。

建立事件

delimiter $$

mysql中的事件語法 MySQL中的事件

事件是什麼?mysql5.1版本開始引進event概念,mysql 中的事件 event 時間觸發器 是用於執行定時或週期性的任務,類似linux中的crontab,但是後者只能精確到分鐘,事件可以精確到秒。通過單獨或呼叫儲存過程使用,在某一特定的時間點,觸發相關的sql語句或儲存過程。事件由乙個特...

Mysql中的事件

一組sql集,用來執行定時任務,跟觸發器很像,都是被動執行的,事件是因為時間到了觸發執行,而觸發器是因為某件事件 增刪改 觸發執行 檢視是否開啟 如果顯示off,則輸入以下語句開啟 首先 新建user表 table structure for user drop table if exists us...

MySQL 簡述MySQL中的事件Event

事件 一組sql集,用來執行定時任務,跟觸發器很像,都是被動執行的。事件是因為時間到了觸發執行,而觸發器是因為某件事件 增刪改 觸發執行。1.查詢mysql的事件功能狀態 想要使用mysql的事件功能,前提是確保服務開啟。查詢指令如下 select event scheduler 或show var...