【MySQL进阶之路 | 基础篇】触发器

1. 为什么要使用触发器

  • 我们可能会遇到如下场景.我们有两个相互关联的表,如商品信息表与库存信息表.当我们向商品信息表添加一条记录时,为了保证数据完整性,也必须向库存信息表添加一条数据.
  • 我们就必须把这两个关联的操作写在程序里,用事务包裹去来,确保这两个操作是原子操作.要么一直执行,要么一起不执行.
  • 这个时候我们可以考虑使用触发器.创建一个触发器,当商品信息表插入数据时自动触发库存数据表的插入操作.

2. 触发器

(1). 语法格式

CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_name
FOR EACH ROW
BEGIN 
          SQL代码块
END;
  • BEFORE/AFTER表示触发时间,是在事件前触发,还是执行事件后触发.
  • INSERT/UPDATE/DELETE表示触发的事件.如INSERT插入事件时触发.
  • FOR EACH ROW表示对受事件影响的每一行都要执行触发器.

(2). 例

7fcd4eb948484c4facd5fd278c632dcb.png

3e782b2f90c94a0da2f73700748727f4.png

3. 查看,删除触发器

(1). 查看触发器

(1). 方式1

# 查看当前数据库的所有触发器
SHOW TRIGGERS;

(2). 方式2 

# 查看数据库的某个触发器的定义
SHOW CREATE TRIGGER after_insert;
# after_insert是我定义的一个触发器

(3). 方式3

# 从系统表查看所有的触发器
SELECT * FROM information_schema.TRIGGERS;

(2). 删除触发器

DROP TRIGGER 触发器名

4. 触发器的优缺点

(1). 优点

  • 触发器可以保证数据的完整性.
  • 触发器可以帮助我们记录操作日志.
  • 触发器还可以在操作数据前,对数据进行合法性检查.

(2). 缺点

  • 最大的问题就是可读性差.因为触发器存储在数据库中,由事件驱动.意味着触发器可能不受应用层控制.对数据库维护有很大挑战.
  • 相关数据的变更,可能会导致触发器出错.进行影响数据操作的正常运行.这些都会由于触发器操作的隐蔽性,使得影响到应用错误原因的排查效率.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值