SQL SERVER触发器

SQL SERVER触发器

触发器定义:
即当发生某一事件时,如果满足给定条件,则执行相应的动作。
触发器是一种专用类型的存储过程,它被捆绑到SQL Server 的表格或者视图上。
SQL Server 支持两种类型的触发器AFTER 触发器和INSTEAD OF 触发器,其中、AFTER 触发器要求只有执行某一操作ISERT, UPDATE ,DELETE 之后触发器才被触发
1)INSTEAD OF 触发器表示并不执行其所定义的操作INSERT,UPDATE ,DELETE,而仅是执行触发器本身,既可在表上定义INSTEAD OF 触发器,也可以在视图上定义INSTEAD OF 触发器。
2)after 触发器(也叫“FOR”触发器)则会在触发 insert、update 或是delect 动作之后执行。
触发事件分为三类:UPDATE、DELETE和INSERT。

触发器作用:
它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。
实例
在这里插入图片描述在这里插入图片描述

--当我在书籍表插入一条数据书,触发一个事件:
--这个事件,将会自动在分类表,将概述及对应的类别的库存加1
go
create trigger tri_add
on Books for insert
as
--修改分类表的库存
declare @typeID int
select @typeID=TypeID from inserted
update bookTyoe set nums=Nums+1 where ID=@typeID

--当我在书籍表删除一条数据书,触发一个事件:
--这个事件,将会自动在分类表,将概述及对应的类别的库存加-1
go
create trigger tri_delete
on Books for delete
as
--修改分类表的库存
declare @typeID int
select @typeID=TypeID from deleted
update bookTyoe set nums=Nums-1 where ID=@typeID

--修改书籍表的分类时,bootstrap分类,有2改为3的时候
--分类表的库存怎么修改,2的类的要减1 3的分类+1
go 
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 bookTyoe set Nums=nums-1 where ID=@oldTypeID
update bookTyoe set Nums=Nums+1 where ID=@newTypeID
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值