触发器

概述

介绍

触发器,就是一种特殊的存储过程。触发器和存储过程一样是一个能够完成特定功能、存储在数据库服务器上的SQL片段,但是触发器无需调用,当对数据库表中的数据执行DML操作时自动触发这个SQL片段的执行,无需手动调用

再MySQL中,只有执行insert,delete,update操作时才能触发触发器的执行

触发器的这种特性可以协助应用再数据库端确保数据的完整性,日志记录,数据效验等操作

使用别名OLD和NEW来引用触发器中发生变化的记录内容,这与其他数据库是相似的。现在触发器还只支持行级触发,不支持语句集触发

特性

1.什么条件会触发:I、D、U

2.什么时候触发:在增删改前或者后

3.触发频率:针对每一行执行

4.触发器定义在表上,附着在表上

创建触发器

格式

注:

1.before|after代表是触发前还是触发后执行触发器

2.触发事件:insert、delete、update

3.表名:表示监控那个表,该表触发了事件就执行触发器

4.each row:代表每行数据都会触发触发器

5.当执行语句只有一个时,可以省略begin和end

6.当执行语句有多个时,也需要定义一个结束符,并在end后使用,并在使用后改回分号

删除触发器

格式

drop trigger [if exists] 触发器名

NEW和OLD

MySQL中定义了NEW和OLD,用来表示触发器监视的表中,触发了触发器的那一行数据,来引用触发器中发生变化的记录内容

触发器类型

NEW和OLD的使用

INSERT型触发器

NEW表示将要或者已经新增的数据

UPDATE型触发器

OLD表示修改之前的数据,NEW表示将要或已经修改后的数据

DELETE型触发器

OLD表示将要或者已经删除的数据

使用方法:
 

NEW.字段名

查看触发器

格式

show triggers;

注意事项

1.MySQL中触发器不能对本表进行insert,update,delete操作,以免递归循环触发

2.尽量少使用触发器,假设触发器触发每次执行1s,insert table500条数据,那么就需要触发500次触发器,光是触发器执行的时间就花费了500s,而insert 500条数据一共是1s,那么这个insert的效率就会非常低了

3.触发器是针对每一行的;对增删改非常频繁的表上不要使用触发器,因为它会非常消耗资源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值