概述
一、什么是触发器?
触发器(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表。
最后
以上就是悲凉铃铛为你收集整理的快速了解触发器(学习笔记)的全部内容,希望文章能够帮你解决快速了解触发器(学习笔记)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复