这斜体样式里写自定义目录标题
- 触发器的作用
- 创建SQL Server触发器
- 示例
- 代码如下
触发器的作用
触发器是一个特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。简单的来说就是在一个数据库的表上定义一个触发器,如果这个触发器的作用是修改另外一张表,当执行这张表的操作如果触发器被触发的时候,另外一张表页会随着改变
创建SQL Server触发器
create trigger 触发器名(触发器名可以随便写)
on 表名 for insert
as
修改表的代码
dadasdas
示例
假如有两张表一张bookTypes(分类表)和一张Books(图书表) 假如你想要增加一边图书的时候分类表里面的数量页随着改变,这时候就用到触发器了
–当我在书籍表插入一条数据,触发一个事件
–这个事件,将会自动在分类表,将该书籍的对应的类别的库存加1
代码如下
go
create trigger tri_add
on Books for insert
as
--修改分类表的库存
declare @typeiID int //创建一个变量
select @typeiID=TypeID from inserted //接收新表的数据
update bookTypes set Nums=Nums+1 where ID=@typeiID
//执行添加的时候书籍的对应类别的库存加1
insert Books values('建筑测量1','测量很醉1',3)
--系统默认有两个表
--inserted 装新数据
--deleted 装旧数据
--当我在书籍删除一条数据,触发一个事件
--这个事件,将会自动在分类表,将该书籍的对应的类别的库存减1
go
create trigger tri_del
on Books for delete
as
--修改分类表的库存
declare @typeiD int //创建一个变量
select @typeiD=TypeID from deleted //接收旧表的数据
update bookTypes set Nums=Nums-1 where ID=@typeiD
--
delete from Books where id=7
--修改书籍的分类时,boostrap的分类 有2改3的时候
--分类表的库存 2的分类-1 3的分类加1
go
alter trigger tri_deit
on Books for update
as
declare @a int --修改之后
declare @b int --修改之前
--select @a=TypeID from inserted
--select @b=TypeID from deleted
update bookTypes set Nums=Nums-1 where ID= @b
update bookTypes set Nums=Nums+1 where ID= @a
--
update Books set TypeID=2 where id=3