MySQL触发器的使用详解

 更新时间:2022年06月17日 08:54:57   作者:不断前进的皮卡丘  
触发器trigger是一种特殊的存储过程,他在插入(inset)、删除(delete)或修改(update)特定表中的数据时触发执行,下面这篇文章主要给大家介绍了关于MySQL触发器使用的相关资料,需要的朋友可以参考下

1.为什么需要触发器

有一些表是互相关联的,比如说商品表和库存表,我们对商品表的数据进行操作,那么对应的库存表还得发生变化,这样才可以保证数据的完整。如果我们是自己手动维护的话,比较麻烦。

这个时候我们可以使用触发器,创建一个触发器,让商品信息数据的插入操作自动触发库存数据的插入操作等,这样我们就不需要担心因为忘记添加库存数据而导致数据丢失了。

2.触发器概述

  • MySQL是从5.0.2版本开始支持触发器的
  • MySQL的触发器和存储过程一样都是嵌入到MySQL服务器的一段程序
  • 触发器是由某一个事件来触发某个操作,这些事件包括insert,delete,update事件
  • 若定义了触发程序,那么数据库执行这些语句的时候,就相当于事件发生,会自动激发触发器执行相应的操作
  • 如果对数据库中的表的数据进行插入等操作的时候,需要自动执行一些数据库逻辑的时候,我们可以用触发器来实现。

3.触发器的创建

3.1语法

触发器是作用在表上的,比如说我们希望表A新增一条记录的时候就触发 触发器的执行,而且还要选择触发器是在insert语句执行之前执行触发器还是之后。

for each row表明,每执行一次事件(insert,update或delete)就会触发一次触发器

CREATE TRIGGER 触发器名称 
{BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON 表名 
FOR EACH ROW 
触发器执行的语句块;

说明:

表名:表示触发器监控的对象。

BEFORE|AFTER:表示触发的时间。BEFORE 表示在事件之前触发;AFTER 表示在事件之后触发。

INSERT|UPDATE|DELETE:表示触发的事件。

  • INSERT 表示插入记录时触发;
  • UPDATE 表示更新记录时触发;
  • DELETE 表示删除记录时触发。

触发器执行的语句块:可以是单条SQL语句,也可以是由BEGIN…END结构组成的复合语句块。

3.2 案例演示

先准备表

CREATE TABLE test_trigger (
id INT PRIMARY KEY AUTO_INCREMENT,
t_note VARCHAR(30)
);


CREATE TABLE test_trigger_log (
id INT PRIMARY KEY AUTO_INCREMENT,
t_log VARCHAR(30)
);

要求:创建触发器:创建名称为before_insert的触发器,向test_trigger数据表插入数据之前,向test_trigger_log数据表中插入before_insert的日志信息。

4.查看触发器

查看触发器是查看数据库中已经存在的触发器的定义,状态和语法信息等

方式一:查看当前数据库的所有触发器的定义

show triggers\G 注意,在SQLyog中,不能加上\G

方式二:查看当前数据库中某一个触发器的定义

show create trigger 触发器名

方式三:从系统库information_schema的TRIGGERS表中查询“salary_check_trigger”触发器的信息

SELECT * FROM information_schema.TRIGGERS;

5.删除触发器

触发器也是数据库对象,触发器也是用drop语句来删除

drop trigger if exists 触发器名;

总结

到此这篇关于MySQL触发器使用的文章就介绍到这了,更多相关MySQL触发器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL学习之索引及优化

    MySQL学习之索引及优化

    这篇文章主要介绍MySQL的索引及优化,索引是帮助MySQL进行高效查询的一种数据结构。好比一本书的目录,能加快查询的速度,想进一步了解的小伙伴可以详细阅读本文
    2023-03-03
  • MySQL Threads_running飙升与慢查询的相关问题解决

    MySQL Threads_running飙升与慢查询的相关问题解决

    这篇文章主要介绍了MySQL Threads_running飙升与慢查询的问题解决,帮助大家更好的理解和学习使用MySQL数据库,感兴趣的朋友可以了解下
    2021-05-05
  • 详解 Mysql 事务和Mysql 日志

    详解 Mysql 事务和Mysql 日志

    这篇文章主要介绍了详解 Mysql 事务和Mysql 日志的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-08-08
  • MySQL Cluster如何创建磁盘表方法解读

    MySQL Cluster如何创建磁盘表方法解读

    MySQL Cluster采用一系列的Disk Data objects来实现磁盘表;接下来为您详细介绍
    2012-11-11
  • 浅谈Mysql多表连接查询的执行细节

    浅谈Mysql多表连接查询的执行细节

    这篇文章主要介绍了浅谈Mysql多表连接查询的执行细节,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • mysql存储过程 游标 循环使用介绍

    mysql存储过程 游标 循环使用介绍

    今天分享下自己对于Mysql存储过程的认识与了解,这里主要说说大家常用的游标加循环的嵌套使用
    2012-11-11
  • Ubuntu自启动Mysql的三种方式

    Ubuntu自启动Mysql的三种方式

    本文给大家介绍ubuntu自启动mysql的三种方式,一种方法通过执行命令,也是最简单的方法,第二种方法是使用sysv-rc-cont工具,第三种方法是使用chkconfig工具,关于以上三种方式的详解请看下文
    2015-10-10
  • 详解DBeaver连接MySQL8以上版本以及解决可能遇到的问题

    详解DBeaver连接MySQL8以上版本以及解决可能遇到的问题

    这篇文章主要介绍了DBeaver连接MySQL8以上版本以及解决可能遇到的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 教你使用idea连接服务器mysql的步骤

    教你使用idea连接服务器mysql的步骤

    这篇文章主要介绍了如何使用idea连接服务器上的mysql,具体步骤本文给大家介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • 基于MySQL游标的具体使用详解

    基于MySQL游标的具体使用详解

    本篇文章是对MySQL游标的具体使用进行了详细的分析介绍,需要的朋友参考下
    2013-06-06

最新评论