关于我对触发器的认识

目录

  1. 什么是触发器(trigger)?
    触发器是一种专用类型的存储过程,它被捆绑到SQL Server 的表格或者视图上。它不是通过手工进行启动的,也不是通过程序调用,而是通过对表格信息的处理(如insert,update,delete)来触发才会执行的。触发器它可以查询其它表,可以包含SQL语句。

  2. 触发器的种类?
    有INSTEAD-OF和AFTER两种触发器。
    INSTEAD OF触发器可以实现更新视图时多个数据表一起更新的问题。
    INSTEAD OF触发器并不执行其定义的操作(insert、update、delete)而仅是执行触发器本身。既可以在表上定义instead of触发器,也可以在视图上定义。
    AFTER触发器要求只有执行某一操作insert、update、delete之后触发器才被触发,且只能定义在表上。

  3. 触发器的作用?
    触发器可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。

4.INSTEAD-OF触发器的语法
--booktype表--
--books表--

--创建.INSTEAD-OF触发器--
go
create trigger tgr_insteadof
on Table_A
instead of update  --设置Instead_of触发器在进行执行update操作时触发也可设置为insert,delete--
as
--定义变量
declare @oldtypeID int
declare @newtypeID int
--从两张表或获取数据
select @oldtypeID=TypeID from deleted --oldtypeID为更新前的旧数据--
select @newtypeID=TypeID from inserted  --newtypeID为更新后的新数据--
--执行操作
update bookType set Nums = Nums-1 where ID=@oldtypeID --书籍种类数量-1--
update bookType set Nums = Nums+1 where ID=@newtypeID --书籍种类数量+1--

5.After 触发器的语法

--创建After触发器--
go
create trigger tgr_name --触发器名称--
on Table_A
for insert --设置触发器为insert,也可以设置为delete,update--
as
declare @typeID int --定义变量
select @typeID=TypeID from inserted --从插入表获取数据
update bookType set Nums = Nums+1 where ID=@typeID --更新bookType表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值