快速了解触发器(学习笔记)

一、什么是触发器?
触发器(trigger)在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。

SQL Server 支持两种类型的触发器:
AFTER 触发器(该类型触发器要求只有执行某一操作(INSERT 、UPDATE 、DELETE) 之后,触发器才被触发)
INSTEAD OF 触发器 (INSTEAD OF 触发器表示并不执行其所定义的操作,而仅是执行触发器本身。)

二、触发器的作用?
触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。可以跟踪数据库内的操作从而不允许未经许可的更新和变化。
三、创建和使用触发器
举例说明:
有两张表 :BookTypes(书籍分类表),Books(书籍表)
在这里插入图片描述
可以创建一个 Update触发器
create trigger tri_add
on Books for insert
as
declare @typeiD int
select @typeiD=TypeID from inserted
update bookTypes
set nums=Nums+1 where ID=@typeiD

用到的功能:我要在书籍表里新增一本书,书籍分类表中就同时更新了这类书籍的一个数量

create trigger tri_del
on Books for delete
as
declare @typeid int
select @typeid=TypeID from deleted
update BookTypes
set Nums=nums-1 where id=@typeid

用到的功能:我要在书籍表里删除一本书,书籍分类表中就同时删除了这类书籍的一个数量

create trigger tri_update
on Books for update
as
declare @newtypeid int
declare @oldtypeid int
select @newtypeid=TypeID from inserted
select @oldtypeid=TypeID from deleted
update BookTypes
set Nums=nums-1 where id=@oldtypeid
update BookTypes
set Nums=nums+1 where id=@newtypeid

用到的功能:我要修改书籍表里某本书的typeid,书籍分类表中就同时做了修改在这本书之前分类的一个总数量减一,修改后的分类总数量加一

最后
理解触发器里面的两个临时的表:Deleted , Inserted 。注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。
一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是:

虚拟表Inserted虚拟表Deleted
存放新增的记录不存储记录
存放用来更新的新记录存放更新前的记录
不存储记录存放被删除的记录

一个Update 的过程可以看作为:生成新的记录到Inserted表,复制旧的记录到Deleted表。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值