首頁 >資料庫 >mysql教程 >mysql查詢觸發器的語句有哪些

mysql查詢觸發器的語句有哪些

青灯夜游
青灯夜游原創
2022-06-14 15:57:036147瀏覽

mysql查詢觸發器的語句有兩個:1、「SHOW TRIGGERS [FROM 資料庫名稱];」語句,可查看目前資料庫或指定資料庫觸發器的基本資訊。 2、「SELECT * FROM information_schema.triggers WHERE trigger_name= '觸發器名';」語句,用於查看特定觸發器的信息,可取得觸發器的內容及其元數據,例如關聯的表名和定義器。

mysql查詢觸發器的語句有哪些

本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。

檢視觸發器是指查看資料庫中已經存在的觸發器的定義、狀態和語法資訊等。

MySQL 中查看觸發器的方法有兩種:

  • SHOW TRIGGERS 語句

  • 查詢information_schema 資料庫下的triggers資料表等

1、SHOW TRIGGERS語句查看觸發器資訊

在MySQL 中,可以透過SHOW TRIGGERS語句來查看觸發器的基本信息,語法格式如下:

SHOW TRIGGERS [FROM 数据库名];

FROM 資料庫名稱:是可選語句,如果要查看目前資料庫中的所有觸發器就省略;如果要取得特定資料庫中的所有觸發器,就不省略,並指定資料庫名稱。

範例 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

mysql查詢觸發器的語句有哪些

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

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

  • Event 表示啟動觸發器的事件,這裡的觸發事件為更新操作UPDATE;

  • Table 表示啟動觸發器的操作物件表,這裡為account 表;

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

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

  • 還有一些其他訊息,例如觸發器的建立時間、SQL 的模式、觸發器的定義帳戶和字元集等,這裡不再一一介紹。

SHOW TRIGGERS 語句用來查看目前所建立的所有觸發器的資訊。因為該語句無法查詢指定的觸發器,所以在觸發器較少的情況下,使用該語句會很方便。如果您想查看特定觸發器的資訊或資料庫中觸發器較多時,可以直接從 information_schema 資料庫中的 triggers 資料表中尋找。

2、在triggers表中檢視觸發器資訊

在MySQL 中,所有觸發器的資訊都存在information_schema 資料庫的triggers 表中,可以透過查詢指令SELECT 查看,具體的語法如下:

SELECT * FROM information_schema.triggers WHERE trigger_name= '触发器名';

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

這種方式可讓您查看觸發器的內容及其元數據,例如關聯的表名和定義器,這是建立觸發器的MySQL使用者的名稱。

範例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

mysql查詢觸發器的語句有哪些

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

  • 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 数据表中所有的触发器信息。

【相关推荐:mysql视频教程

以上是mysql查詢觸發器的語句有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn