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

2021-09-20 19:33:47 字數 2846 閱讀 2549

事件排程器有時也可稱為臨時觸發器(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 countdoevery 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 every1minute

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