什么是触发器?
触发器是一种专用类型的存储过程,它被捆绑到SQL Server 的表格或者视图上,或者说触发器也是一个特殊的存储过程,主要是通过事件来触发而被执行的
触发器的相关作用与种类
一:作用
1:它可以强化约束,来维护数据的完整性和一致性。
2:可以跟踪数据库内的操作从而不允许未经许可的更新和变化。
3:可以联级运算。
4:能够同步实时的复制表中的数据。
二:种类
触发器主要分为两个类型,分别是INSTEAD-OF 与AFTER。
1:INSTEAD-OF 触发器
instead of 触发器表示并不执行其定义的操 insert,update,delete 而仅是执行触发器本身,既可以在表上定义 instead of 触发器也可以在视图上定义。
2:AFTER触发器
After触发器要求只有执行某一项操作insert,update,delete之后才被触发,而且只能定义在表上。
如何创建触发器
1:首先我们准备两个数据表,并填入一些数据
2:接下来用create trigger来创建触发器,并设置触发条件
GO
ALTER trigger [dbo].[tri_delete1]
on [dbo].[Books] for insert
as
declare @typeID int
--修改分类表的库存
select @typeID=typeID from deleted
update BookType set Nums=Nums-1 where ID=@typeID
3:执行相对应的语句
4:所创建过的触发器在对应表的下面
inserted与deleted对比
触发器有两个特殊的表:
插入表(inserted表)和删除表(deleted)
这两张是逻辑表也是虚表,有系统在内存中创建者两张表,不会存储在数据库中。而且两张表的都是只读的,只能读取数据而不能修改数据。这两张表的结果总是与被改触发器应用的表的结构相同。当触发器完成工作后,这两张表就会被删除。
对表的操作 | Inserted逻辑表 | Deleted逻辑表 |
---|---|---|
增加记录 (insert) | 存放增加的记录 | 无 |
删除记录 (delete) | 无 | 存放被删除的记录 |
修改记录 (update) | 存放更新后的记录 | 存放更新前的记录 |