mysql啟動事件

2021-12-29 21:22:43 字數 3953 閱讀 8495

mysql啟動事件

事件排程器有時也可稱為臨時觸發器(temporal triggers),因為事件排程器是基於特定時間週期觸發來執行某些任務,而觸發器(triggers)是基於某個表所產生的事件觸發的,區別也就在這裡。

在使用這個功能之前必須確保event_scheduler已開啟,可執行

set global event_scheduler = 1; 

或我們可以在配置my.ini檔案 中加上 event_scheduler = 1或

set global event_scheduler = on;

www.2cto.com  

來開啟,也可以直接在啟動命令加上「–event_scheduler=1」,例如:

mysqld ... --event_scheduler=1

要檢視當前是否已開啟事件排程器,可執行如下sql:

show variables like 'event_scheduler';

或select @@event_scheduler;

或擁有 super 許可權的賬戶執行 show processlist 就可以看到這個執行緒了。

在使用事件這個功能,首先要保證你的mysql的版本是5.1以上,然後還要檢視你的mysql伺服器上的事件是否開啟。

www.2cto.com  

檢視事件是否開啟,使用如下命令檢視:

show variables like 'event_scheduler';

select @@event_scheduler;

show processlist;

如果看到event_scheduler為on或者processlist中顯示有event_scheduler的資訊說明就已經開啟了事件。如果顯示為off或者在processlist中檢視不到event_scheduler的資訊,那麼就說明事件沒有開啟,我們需要開啟它。

開啟mysql的事件,通過如下三種方式開啟:

ø  通過動態引數修改

set global event_scheduler = on;

更改完這個引數就立刻生效了

注意:還是要在my.cnf中新增event_scheduler=on。因為如果沒有新增的話,mysql重啟事件又會回到原來的狀態了。

ø  更改配置檔案然後重啟

在my.cnf中的[mysqld]部分新增如下內容,然後重啟mysql。

event_scheduler=on

ø  通過制定事件引數啟動

www.2cto.com  

mysqld ... --event_scheduler=on

建立事件(create event)

先來看一下它的語法:

create event [if not exists] event_name

on schedule schedule

[on completion [not] preserve]

[enable | disable]

[comment 'comment']

do sql_statement;

schedule:

at timestamp [+ interval interval]

| every interval [starts timestamp] [ends timestamp]

interval:

quantity

1)首先來看乙個簡單的例子來演示每秒插入一條記錄到資料表

use test;

create table aaa (timeline timestamp);

create event e_test_insert

on schedule every 1 second 

do insert into test.aaa values (current_timestamp);

等待3秒鐘後,再執行查詢成功。

2) 5天後清空test表:

www.2cto.com  

create event e_test

on schedule at current_timestamp + interval 5 day

do truncate table test.aaa;

3) 2023年7月20日12點整清空test表:

create event e_test

on schedule at timestamp '2007-07-20 12:00:00'

do truncate table test.aaa;

4) 每天定時清空test表:

create event e_test

on schedule every 1 day

do truncate table test.aaa;

5) 5天後開啟每天定時清空test表:

create event e_test

on schedule every 1 day

starts current_timestamp + interval 5 day

do truncate table test.aaa;

6) 每天定時清空test表,5天後停止執行:

create event e_test

on schedule every 1 day

ends current_timestamp + interval 5 day

do truncate table test.aaa;

7) 5天後開啟每天定時清空test表,乙個月後停止執行:

create event e_test

on schedule every 1 day

starts current_timestamp + interval 5 day

ends current_timestamp + interval 1 month

do truncate table test.aaa;

[on completion [not] preserve]可以設定這個事件是執行一次還是持久執行,預設為not preserve。

8) 每天定時清空test表(只執行一次,任務完成後就終止該事件):

create event e_test

on schedule every 1 day

on completion not preserve

do truncate table test.aaa;

[enable | disable]可是設定該事件建立後狀態是否開啟或關閉,預設為enable。

[comment 『comment』]可以給該事件加上注釋。

修改事件(alter event)

alter event event_name

[on schedule schedule]

[rename to new_event_name]

[on completion [not] preserve]

[comment 'comment']

[enable | disable]

[do sql_statement]

1) 臨時關閉事件

alter event e_test disable;

2) 開啟事件

www.2cto.com  

alter event e_test enable;

3) 將每天清空test表改為5天清空一次:

alter event e_test

on schedule every 5 day;

刪除事件(drop event)

語法很簡單,如下所示:

drop event [if exists] event_name

例如刪除前面建立的e_test事件

drop event e_test;

當然前提是這個事件存在,否則會產生error 1513 (hy000): unknown event錯誤,因此最好加上if exists

drop event if exists e_test;

mysql 啟動事件 啟動觸發器功能

事件排程器有時也可稱為臨時觸發器 temporal triggers 因為事件排程器是基於特定時間週期觸發來執行某些任務,而觸發器 triggers 是基於某個表所產生的事件觸發的,區別也就在這裡。在使用這個功能之前必須確保event scheduler已開啟,可執行 開啟 開啟事件觸發器 1 se...

啟動mysql 啟動 MySQL

禁止碼迷,布布扣,豌豆 碼農教程,愛碼網等第三方爬蟲 爬取!登入 mysql 首先我們先把 mysql 服務執行起來,接下來我們肯定是迫不及待想操作下 mysql 了,但是我們不能直接這麼做。mysql 和客戶機 伺服器 dbms一樣,就類似於登入 qq,在進入程式進行操作前必須得登入到 dbms ...

mysql 監測事件 MySQL事件 Events

mysql事件 events 一 關鍵字 event 二 語法 create event?if not exists 如果不存在則建立 event name?on schedule schedle on completion not preserve enable desable comment c...