MySQL数据库触发器

这篇具有很好参考价值的文章主要介绍了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 数据表中所有的触发器信息。文章来源地址https://www.toymoban.com/news/detail-410969.html

到了这里,关于MySQL数据库触发器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库触发器简介——修改数据的触发器、删除数据的触发器

    修改数据的触发器 更新数据 思考下面这个触发器会触发几次?几条数据就触发几次。

    2024年02月15日
    浏览(34)
  • 数据库-触发器

    目录 1. 触发器概述 2. 触发器的创建 2.1 创建触发器语法 3. 查看、删除触发器  3.2 删除触发器 4. 触发器的优缺点 4.2 缺点 4.3 注意点 在实际开发中,我们经常会遇到这样的情况:有 2 个或者多个相互关联的表,如 商品信息 和 库存信息 分 别存放在 2 个不同的数据表中, 我们

    2024年02月07日
    浏览(36)
  • 数据库原理及应用实验报告-实验10-触发器

     实验题目   实验 10触发器    10.1 实验目的 通过实验使学生加深对数据完整性的理解,学会理解、创建和使用触发器。 10.2 实验内容   (用实验9的Teacher表) (1) 为 Teacher 表建立触发器T1,当插入或使更新表中的数据时,保证所操作的纪录的 Tage 值大于0。 (2) 为 Teacher 表建立

    2024年02月05日
    浏览(33)
  • 五、C#与数据库交互(数据存储过程与触发器)

    在C#中与数据库交互时,除了基本的查询和更新操作,还经常需要使用存储过程和触发器。下面我将简要介绍如何在C#中使用存储过程和触发器。 存储过程 存储过程是一组为了完成特定功能的SQL语句集,它可以被存储在数据库中,并可以被调用执行。在C#中,你可以使用 Sql

    2024年01月25日
    浏览(33)
  • 数据库24:触发器的创建和使用(头歌云课)

      任务描述 相关知识 触发器的定义 触发器和存储过程的区别 触发器的优点 触发器的作用 触发器的分类 DML触发器 DDL触发器 登录触发器 触发器的工作原理 inserted表 deleted表 创建触发器 编程要求 测试说明 任务描述 本关任务:通过实验,加深对数据完整性的理解,掌握创建

    2024年02月05日
    浏览(63)
  • 达梦数据库(DM7)自动更新时间触发器及时间排序

    达梦数据库(DM7)目前支持的列属性并不多,比如并不支持直接创建自动记录更新时间的列属性,但是这个功能在实际数据库使用中又比较频繁,本文简单记录如何通过时间触发器设置某列自动记录更新时间,即所谓的update_time列。另外,实际使用中可能会有这种排序需求:永远

    2024年02月14日
    浏览(32)
  • 存储过程、触发器、游标、视图、自定义函数 字段类型、字段可空、统计字段、逻辑删除 权限系统数据库&无限极类别设计

    在数据库设计中,存储过程、触发器、游标、视图、自定义函数、字段类型、字段可空、统计字段、逻辑删除以及权限系统和无限级类别设计都是重要的概念。下面我将逐一解释这些概念,并提供相关的设计建议。 存储过程 (Stored Procedure) 定义 :存储过程是一组为了完成特定

    2024年03月09日
    浏览(86)
  • 【SQL Server】数据库开发指南(九)详细讲解 MS-SQL 触发器的的创建、修改、应用与适用场景

    本系列博文还在更新中,收录在专栏:#MS-SQL Server 专栏中。 本系列文章列表如下: 【SQL Server】 Linux 运维下对 SQL Server 进行安装、升级、回滚、卸载操作 【SQL Server】数据库开发指南(一)数据库设计的核心概念和基本步骤 【SQL Server】数据库开发指南(二)MSSQL数据库开发对

    2024年02月08日
    浏览(49)
  • mysql触发器监听数据投递中间件

    目前市面上有许多的 CDC(Change Data Capture) 框架用于监听数据库的数据变动,例如:canal、Debezium、Maxwell等都是用来解析 binlog 日志实现事件的监听。但是有一个情况就是如果公司对 binlog 日志文件的权限管控的很严格,那么这些用于监听的工具就可能因为权限的问题无法使用

    2024年02月07日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包