sql serve触发器

  1. 触发器的定义
  2. 触发器的种类以及使用
  3. 触发器的作用

触发器的定义

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

触发器的种类

  1. 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
  1. instead of 触发器
--创建触发器语法
--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

触发器的作用

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

猜你喜欢

转载自blog.csdn.net/weixin_45191758/article/details/106250029
今日推荐