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...