my sql 觸發器 MySQL檢視觸發器

2021-10-12 13:08:21 字數 4027 閱讀 5962

檢視觸發器是指檢視資料庫中已經存在的觸發器的定義、狀態和語法資訊等。mysql 中檢視觸發器的方法包括 show triggers 語句和查詢 information_schema 資料庫下的 triggers 資料表等。本節將詳細介紹這兩種檢視觸發器的方法。

show triggers語句檢視觸發器資訊

在 mysql 中,可以通過 show triggers 語句來檢視觸發器的基本資訊,語法格式如下:

show triggers;

示例 1

首先建立乙個資料表 account,表中有兩個字段,分別是 int 型別的 accnum 和 decimal 型別的 amount。sql 語句和執行結果如下:

mysql> create table account(

-> accnum int(4),

-> amount decimal(10,2));

query ok, 0 rows affected (0.49 sec)

建立乙個名為 trigupdate 的觸發器,每次 account 表更新資料之後都向 myevent 資料表中插入一條資料。建立資料表 myevent 的 sql 語句和執行結果如下:

mysql> create table myevent(

-> id int(11) default null,

-> evtname char(20) default null);

query ok, 0 rows affected (0.26 sec)

建立 trigupdate 觸發器的 sql **如下:

mysql> create trigger trigupdate after update on account

-> for each row insert into myevent values(1,'after update');

query ok, 0 rows affected (0.15 sec)

使用 show triggers 語句檢視觸發器(在 show triggers 命令後新增\g,這樣顯示資訊會比較有條理),sql 語句和執行結果如下:

mysql> show triggers \g

*************************** 1. row ***************************

trigger: trigupdate

event: update

table: account

statement: insert into myevent values(1,'after update')

timing: after

created: 2020-02-24 14:07:15.08

sql_mode: strict_trans_tables,no_auto_create_user,no_engine_substitution

definer: root@localhost

character_set_client: gbk

collation_connection: gbk_chinese_ci

database collation: latin1_swedish_ci

1 row in set (0.09 sec)

由執行結果可以看到觸發器的基本資訊。對以上顯示資訊的說明如下:

trigger 表示觸發器的名稱,在這裡觸發器的名稱為 trigupdate;

event 表示啟用觸發器的事件,這裡的觸發事件為更新操作 update;

table 表示啟用觸發器的操作物件表,這裡為 account 表;

statement 表示觸發器執行的操作,這裡是向 myevent 資料表中插入一條資料;

timing 表示觸發器觸發的時間,這裡為更新操作之後(after);

還有一些其他資訊,比如觸發器的建立時間、sql 的模式、觸發器的定義賬戶和字符集等,這裡不再一一介紹。

show triggers 語句用來檢視當前建立的所有觸發器的資訊。因為該語句無法查詢指定的觸發器,所以在觸發器較少的情況下,使用該語句會很方便。如果要檢視特定觸發器的資訊或者資料庫中觸發器較多時,可以直接從 information_schema 資料庫中的 triggers 資料表中查詢。

在triggers表中檢視觸發器資訊

在 mysql 中,所有觸發器的資訊都存在 information_schema 資料庫的 triggers 表中,可以通過查詢命令 select 來檢視,具體的語法如下:

select * from information_schema.triggers where trigger_name= '觸發器名';

其中,'觸發器名'用來指定要檢視的觸發器的名稱,需要用單引號引起來。這種方式可以查詢指定的觸發器,使用起來更加方便、靈活。

示例 2

下面使用 select 命令檢視 trigupdate 觸發器,sql 語句如下:

select * from information_schema.triggers where trigger_name= 'trigupdate'\g

上述命令通過 where 來指定需要檢視的觸發器的名稱,執行結果如下:

mysql> select * from information_schema.triggers where trigger_name= 'trigupdate'\g

*************************** 1. row ***************************

trigger_catalog: def

trigger_schema: test

trigger_name: trigupdate

event_manipulation: update

event_object_catalog: def

event_object_schema: test

event_object_table: account

action_order: 1

action_condition: null

action_statement: insert into myevent values(1,'after update')

action_orientation: row

action_timing: after

action_reference_old_table: null

action_reference_new_table: null

action_reference_old_row: old

action_reference_new_row: new

created: 2020-02-24 16:07:15.08

sql_mode: strict_trans_tables,no_auto_create_user,no_engine_substitution

definer: root@localhost

character_set_client: gbk

collation_connection: gbk_chinese_ci

database_collation: latin1_swedish_ci

1 row in set (0.22 sec)

由執行結果可以看到觸發器的詳細資訊。對以上顯示資訊的說明如下:

trigger_schema 表示觸發器所在的資料庫;

trigger_name 表示觸發器的名稱;

event_object_table 表示在哪個資料表上觸發;

action_statement 表示觸發器觸發的時候執行的具體操作;

action_orientation 的值為 row,表示在每條記錄上都觸發;

action_timing 表示觸發的時刻是 after;

還有一些其他資訊,比如觸發器的建立時間、sql 的模式、觸發器的定義賬戶和字符集等,這裡不再一一介紹。

上述 sql 語句也可以不指定觸發器名稱,這樣將檢視所有的觸發器,sql 語句如下:

select * from information_schema.triggers \g

這個語句會顯示 triggers 資料表中所有的觸發器資訊。

my sql 觸發器 mysql建立觸發器

首先,我們來了解一下什麼是觸發器,觸發器,就是在對一張表資料進行增 insert 刪 delete 改 update 的時候,為了保持資料的一致性,對別的表也要進行相應的資料修改。我們都知道mysql最後事務提交後,資料是會儲存到磁碟上的,那麼每次在insert,delete,update時候舊資料...

mysql 觸發器定義 mysql觸發器

什麼是觸發器 觸發器是與表有關的資料庫物件,在滿足定義條件時觸發,並執行觸發器中定義的語句集合。觸發器的這種特性可以協助應用在資料庫端確保資料的完整性。舉個例子,比如你現在有兩個表 使用者表 和 日誌表 當乙個使用者被建立的時候,就需要在日誌表中插入建立的log日誌,如果在不使用觸發器的情況下,你需...

mysql 複製觸發器 MySQL觸發器

觸發器是mysql響應以下任意語句而自動執行的一條mysql語句 或位於begin和end語句之間的一組語句 delete insert update 其他mysql語句不支援觸發器。建立觸發器 在建立觸發器時,需要給出4條資訊 唯一的觸發器名 觸發器關聯的表 觸發器應該響應的活動 delete i...