触发器是一个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是当某一事件发生时触发,例如当表执行deletet insert update时就会被执行。触发器是用来维护表数据的完整性 触发器分为: after触发器(之后触发) instead of 触发器 (之前触发) 触发器里有两章特殊的表插入表(instered表)和删除表(deleted表),这两张是逻辑表也是虚表。有系统在内存中创建者两张表,不会存储在数据库中。而且两张表的都是只读的,只能读取数据而不能修改数据。这两张表的结果总是与被改触发器应用的表的结构相同。当触发器完成工作后,这两张表就会被删除。Inserted表的数据是插入或是修改后的数据,而deleted表的数据是更新前的或是删除的数据。 准备好两张表作为练习列子 Books表 BookTypes表 after触发器是在对表进行操作之后触发的。创建新增触发器语句 需求:在新增书籍的时候,对应的类型表数据要更新 手动新增一个书籍分类,并且Nums为0 然后新增一本书 这个时候书籍分类的数量就会自动更新 instead of是在对表操作之前触发的 模拟需求:删除BookTypes表其Books表的对应的书籍类型也要删除 执行sql语句删除我们刚刚新增的书籍类型及书籍 对应的书籍类型记录已被删除 书籍类型下的书籍也被删除了
触发器概述
对表的操作
Inserted逻辑表
Deleted逻辑表
增加记录(insert)
存放增加的记录
无
删除记录(delete)
无
存放被删除的记录
修改记录(update)
存放更新后的记录
存放更新前的记录
字段
字段含义
字段类型
ID
书籍编号,自增
int
Name
书名
nvarchar(50)
TypeID
书籍类型ID
int
字段
字段含义
字段类型
ID
类型编号,自增
int
Name
类型名
nvarchar(50)
Nums
该类型下书籍数量
int
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
instead of 触发器
创建instead of触发器
create trigger tgr_deleteBookType on [dbo].[BookTypes] 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=4
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算