• MySQL查看触发器


    查看触发器是指查看数据库中已经存在的触发器的定义、状态和语法信息等。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 数据表中所有的触发器信息。

  • 相关阅读:
    Android学习——体验活动的生命周期
    Android学习——活动的生存期
    《程序员修炼之道:从小工到专家》 阅读笔记01
    开课第七周周总结
    Android学习——活动状态
    Android学习——返回栈
    Android学习——Intent传递数据
    Android学习——隐式Activity的用法
    Android学习——隐式Activity
    Android学习——使用显示Intent
  • 原文地址:https://www.cnblogs.com/cy0628/p/15026722.html
Copyright © 2020-2023  润新知