sql server触发器

触发器的定义

触发器的种类以及使用

触发器的作用

触发器的定义

触发器是一种专用类型的存储过程,它被捆绑到SQL Server 的表格或者视图上。

触发器的种类
instead of 触发器
1用于执行一个替代操作来代替触发事件的操作,最终instead of 触发器的触发事件本身不会被执行,不像DML触发器那样,DML触发事件本身最终会被执行.
2instead of 触发器只能针对视图,不是视图所有列都支持。如果对列进行数学运算或函数运算,不能对该列进行DML操作,这时候可以使用instead of 触发器…

示例
go
create trigger tgr_deleteBookType on my_view
instead of delete
as
–定义变量,存储删除类型ID
declare @typeID int
select @typeID = id from deleted
–删除类型之前删除对应的书籍
delete from [dbo].[Books] where TypeID=@typeID
–删除书籍后再删除类型
delete from [dbo].[BookTypes] where id=@typeID

delete from [dbo].[BookTypes] where id=2

after 触发器

创建after触发器
after触发器是在对表进行操作之后触发的。创建新增触发器语句

–create trigger 触发器名称
– on 表名
– for 操作
–as 需要执行的sql语句
create trigger tgr_bookInsert
on [dbo].[Books]
for insert
as
–定义变量,存储新增书籍的类型ID
declare @typeID int
–定义变量存储书籍类型的数量
declare @typeNums int
–找到存储新增书籍的类型ID
select @typeID=typeID from inserted
–计算出对应书籍类型的数量
select @typeNums=count(*) from [dbo].[Books] where typeID=@typeID
–更新BookTypes表
update [dbo].[BookTypes] set Nums=@typeNums

触发器的作用
触发器是一个特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试
应支付0元
点击重新获取
扫码支付

支付成功即可阅读