在 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 数据表中查找。