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

2021-10-17 16:23:59 字數 2963 閱讀 5436

事件是什麼?

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個位元組。

dobegin

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

(sql_statements)

end$$

delimiter ;

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

檢視事件

檢視當前所在庫的事件:

show events;

啟用和禁用

alter event event_name disable;

alter event event_name enable;

event_name:事件名稱

刪除事件

drop event [if exists] event_name

event_name:事件名稱

實踐簡單案例

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

資料庫如下:

我們主要看 table1 這張表。

sql 如下:

delimiter $$

create definer = current_user event `spring_boot_building`.`insert_currenttime_in_table1`

on schedule

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

every 5 second

on completion preserve

enable

comment '每隔5秒中就向 `table1` 插入當前時間的事件'

dobegin

insert into `table1` values(null, now());

end$$

delimiter ;

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

事件正常執行

php中mysql函式 PHP中的MySQL函式

本篇主要介紹採用php語言如何連線mysql資料庫。首先需要檢測服務mysql是否開啟成功。檢視phpinfo 函式 使用php運算元據庫的步驟 一 連線資料庫伺服器 二 選擇資料庫 mysql select db 資料庫名 三 設定編碼格式 mysql set charset utf 8 四 資料...

php中mysql的使用 PHP中MySQL的使用

連線到mysql mysql connect dbc mysql connect host,user,password 選擇當前資料庫 mysql select db database name mysql select db database name conn eg mysql select d...

MySQL中的事件

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