事件排程器有時也可稱為臨時觸發器(temporal triggers),
因為事件排程器是基於特定時間週期觸發來執行某些任務,而觸發器(triggers)是基於某個表所產生的事件觸發的,區別也就在這裡。
在使用這個功能之前必須確保event_scheduler已開啟,可執行
開啟:①(開啟事件觸發器)
1
set global event_scheduler =
1
;
或我們可以在配置my.ini檔案 中加上 event_scheduler = 1
②或
1
set global event_scheduler = on;
來開啟,也可以直接在啟動命令加上「–event_scheduler=1」,例如:
mysqld ... --event_scheduler=1
要檢視當前是否已開啟事件排程器,可執行如下sql:
1
2
3
show variables like
'event_scheduler'
;
或
select @
@event_scheduler
;
或 擁有 super 許可權的賬戶執行 show processlist 就可以看到這個執行緒了。
在使用事件這個功能,首先要保證你的mysql的版本是5.1以上,然後還要檢視你的mysql伺服器上的事件是否開啟。
如果看到event_scheduler為on
或者processlist中顯示有event_scheduler的資訊說明就已經開啟了事件。如果顯示為off
或者在processlist中檢視不到event_scheduler的資訊,那麼就說明事件沒有開啟,我們需要開啟它。
其他:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
-- 開啟事件排程的支援
set global event_scheduler =
1
;
-- 列出事件
show events;
show create event del_user;
-- 查詢觸發器是否啟動。
show variables like
'event_scheduler'
;
-- 定義儲存過程 (修改test表裡面的id都為
5
)
delimiter
//
drop procedure if exists usp_update_test;
create procedure usp_update_test()
-- expire_interval: the unit is hour
-- delete_per_count: specify the count
do
every delete operation
begin
declare id int;
set id=
5
;
update test set id=id;
end
//
delimiter ;
-- 定義事件 (一分鐘執行一次上面的儲存過程)
drop event if exists del_test;
create event del_test
on schedule every
1
minute
do
call usp_update_test()
MYSQL中禁用 啟動觸發器
在使用mysql過程中,經常會使用到觸發器,但是有時使用不當會造成一些麻煩。有沒有一種辦法可以控制觸發器的呼叫呢?觸發器顧名思義就是資料庫在一定的調條件自動呼叫的sql語句,觸發器拒絕了人工呼叫的過程,由資料庫mysql資料庫自動的呼叫,執行更加高效。如何禁用觸發器呢?表demo 1 create ...
MYSQL中禁用 啟動觸發器
在使用mysql過程中,經常會使用到觸發器,但是有時使用不當會造成一些麻煩。有沒有一種辦法可以控制觸發器的呼叫呢?觸發器顧名思義就是資料庫在一定的調條件自動呼叫的sql語句,觸發器拒絕了人工呼叫的過程,由資料庫mysql資料庫自動的呼叫,執行更加高效。如何禁用觸發器呢?表demo 1 create ...
觸發器 mysql觸發器
觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...