新聞中心
查看觸發(fā)器是指查看數(shù)據(jù)庫中已經(jīng)存在的觸發(fā)器的定義、狀態(tài)和語法信息等。MySQL 中查看觸發(fā)器的方法包括 SHOW TRIGGERS 語句和查詢 information_schema 數(shù)據(jù)庫下的 triggers 數(shù)據(jù)表等。本節(jié)將詳細(xì)介紹這兩種查看觸發(fā)器的方法。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了硚口免費(fèi)建站歡迎大家使用!
SHOW TRIGGERS語句查看觸發(fā)器信息
在 MySQL 中,可以通過 SHOW TRIGGERS 語句來查看觸發(fā)器的基本信息,語法格式如下:
SHOW TRIGGERS;
示例 1
首先創(chuàng)建一個(gè)數(shù)據(jù)表 account,表中有兩個(gè)字段,分別是 INT 類型的 accnum 和 DECIMAL 類型的 amount。SQL 語句和運(yùn)行結(jié)果如下:
mysql> CREATE TABLE account(
-> accnum INT(4),
-> amount DECIMAL(10,2));
Query OK, 0 rows affected (0.49 sec)
創(chuàng)建一個(gè)名為 trigupdate 的觸發(fā)器,每次 account 表更新數(shù)據(jù)之后都向 myevent 數(shù)據(jù)表中插入一條數(shù)據(jù)。創(chuàng)建數(shù)據(jù)表 myevent 的 SQL 語句和運(yùn)行結(jié)果如下:
mysql> CREATE TABLE myevent(
-> id INT(11) DEFAULT NULL,
-> evtname CHAR(20) DEFAULT NULL);
Query OK, 0 rows affected (0.26 sec)
創(chuàng)建 trigupdate 觸發(fā)器的 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 語句查看觸發(fā)器(在 SHOW TRIGGERS 命令后添加
\G,這樣顯示信息會(huì)比較有條理),SQL 語句和運(yùn)行結(jié)果如下:
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)
由運(yùn)行結(jié)果可以看到觸發(fā)器的基本信息。對(duì)以上顯示信息的說明如下:
- Trigger 表示觸發(fā)器的名稱,在這里觸發(fā)器的名稱為 trigupdate;
- Event 表示激活觸發(fā)器的事件,這里的觸發(fā)事件為更新操作 UPDATE;
- Table 表示激活觸發(fā)器的操作對(duì)象表,這里為 account 表;
- Statement 表示觸發(fā)器執(zhí)行的操作,這里是向 myevent 數(shù)據(jù)表中插入一條數(shù)據(jù);
- Timing 表示觸發(fā)器觸發(fā)的時(shí)間,這里為更新操作之后(AFTER);
- 還有一些其他信息,比如觸發(fā)器的創(chuàng)建時(shí)間、SQL 的模式、觸發(fā)器的定義賬戶和字符集等,這里不再一一介紹。
SHOW TRIGGERS 語句用來查看當(dāng)前創(chuàng)建的所有觸發(fā)器的信息。因?yàn)樵撜Z句無法查詢指定的觸發(fā)器,所以在觸發(fā)器較少的情況下,使用該語句會(huì)很方便。如果要查看特定觸發(fā)器的信息或者數(shù)據(jù)庫中觸發(fā)器較多時(shí),可以直接從 information_schema 數(shù)據(jù)庫中的 triggers 數(shù)據(jù)表中查找。
在triggers表中查看觸發(fā)器信息
在 MySQL 中,所有觸發(fā)器的信息都存在 information_schema 數(shù)據(jù)庫的 triggers 表中,可以通過查詢命令 SELECT 來查看,具體的語法如下:
SELECT * FROM information_schema.triggers WHERE trigger_name= '觸發(fā)器名';
其中,
'觸發(fā)器名'用來指定要查看的觸發(fā)器的名稱,需要用單引號(hào)引起來。這種方式可以查詢指定的觸發(fā)器,使用起來更加方便、靈活。
示例 2
下面使用 SELECT 命令查看 trigupdate 觸發(fā)器,SQL 語句如下:
SELECT * FROM information_schema.triggers WHERE TRIGGER_NAME= 'trigupdate'\G
上述命令通過 WHERE 來指定需要查看的觸發(fā)器的名稱,運(yùn)行結(jié)果如下:
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)
由運(yùn)行結(jié)果可以看到觸發(fā)器的詳細(xì)信息。對(duì)以上顯示信息的說明如下:
- TRIGGER_SCHEMA 表示觸發(fā)器所在的數(shù)據(jù)庫;
- TRIGGER_NAME 表示觸發(fā)器的名稱;
- EVENT_OBJECT_TABLE 表示在哪個(gè)數(shù)據(jù)表上觸發(fā);
- ACTION_STATEMENT 表示觸發(fā)器觸發(fā)的時(shí)候執(zhí)行的具體操作;
- ACTION_ORIENTATION 的值為 ROW,表示在每條記錄上都觸發(fā);
- ACTION_TIMING 表示觸發(fā)的時(shí)刻是 AFTER;
- 還有一些其他信息,比如觸發(fā)器的創(chuàng)建時(shí)間、SQL 的模式、觸發(fā)器的定義賬戶和字符集等,這里不再一一介紹。
上述 SQL 語句也可以不指定觸發(fā)器名稱,這樣將查看所有的觸發(fā)器,SQL 語句如下:
SELECT * FROM information_schema.triggers \G
這個(gè)語句會(huì)顯示 triggers 數(shù)據(jù)表中所有的觸發(fā)器信息。
網(wǎng)站標(biāo)題:創(chuàng)新互聯(lián)數(shù)據(jù)庫教程:MySQL查看觸發(fā)器
本文路徑:http://fisionsoft.com.cn/article/dhodeoc.html


咨詢
建站咨詢
