2023.12.18笔记(3)MySQL触发器

触发器(Trigger)是 MySQL 中一个非常实用的功能,它可以在操作者对表进行「增删改」 之前(或之后)被触发,自动执行一段事先写好的 SQL 代码。

触发器的六种方式:

  • BEFORE INSERT : 在插入数据前,检测插入数据是否符合业务逻辑,如不符合返回错误信息。
  • AFTER INSERT : 在表 A 创建新账户后,将创建成功信息自动写入表 B 中。
  • BEFORE UPDATE :在更新数据前,检测更新数据是否符合业务逻辑,如不符合返回错误信息。
  • AFTER INSERT :在更新数据后,将操作行为记录在 log 中
  • BEFORE DELETE :在删除数据前,检查是否有关联数据,如有,停止删除操作。
  • AFTER DELETE :删除表 A 信息后,自动删除表 B 中与表 A 相关联的信息。

1.创建触发器

在MySQL中创建触发器通过SQL语句CREATE TRIGGER来实现,其语法形式如下:

CREATE TRIGGER [触发器的名字]
[触发器执行时机] [触发器监测的对象]
ON [表名]
FOR EACH ROW [触发器主体代码]

注意:

不能创建具有相同名字的触发器。
对于具有相同触发程序动作时间和事件的给定表,不能有两个触发器(比如after insert插入之后有一个触发器那么就不能再有触发器是after的了,但是before insert是可以的)。
因此,在创建触发器之前,需要查看MySQL中是否已经存在该标识符的触发器和触发器的相关事件。 

2.创建触发器包含多个执行语句

​
CREATE TRIGGER [触发器的名字]
[触发器执行时机] [触发器监测的对象]
ON [表名]
FOR EACH ROW 
 BEGIN                                                        
       [触发器多条语句内容]                                                 
    END; 

​

比“只有一条执行语句的触发器”语法多出来两个关键字BEGIN和END,在这两个关键字之间是所要执行的多个执行语句的内容,执行语句之间用分号隔开。

 在MySQL中,一般情况下用“;”符号作为语句的结束符号,可是在创建触发器时,需要用到“;”符号作为执行语句的结束符号。为了解决该问题,可以使用关键字DELIMITER语句。例如,"DELIMITER  $'$"可以将结束符号设置成“$$”。

3.查看触发器

①SHOW TRIGGERS语句查看触发器

    查看MySQL软件中已经存在的触发器。在MySQL软件中查看已经存在的触发器,通过SQL语句SHOW 语句来实现,其语法形式如下:

SHOW TRIGGERS ;
②查看系统表triggers实现查看触发器  

    在MySQL中,在系统数据库information_schema中存在一个存储所有触发器信息的系统表triggers,因此查询该表格的记录也可以实现查看触发器功能。系统表triggers的表结构

--选择数据库 
use 数据库名;                
select * from triggers;     
--查询系统表triggers中的触发器                                                      
select * from triggers where trigger_name='tri_delete_student';

4.删除数据库

在MySQL中,删除触发器可以通过SQL语句DROP TRIGGER来实现,其语法形式如下: 

DROP TRIGGER [触发器名]; 

参考博客:
版权声明:本文为优快云博主「霸道小明」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_54169998/article/details/122720159

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值