檢視觸發器是指檢視資料庫中已經存在的觸發器的定義、狀態和語法資訊等。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...