欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SQL Server 触发器

程序员文章站 2022-03-09 09:12:12
...

这斜体样式里写自定义目录标题

触发器的作用

触发器是一个特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。简单的来说就是在一个数据库的表上定义一个触发器,如果这个触发器的作用是修改另外一张表,当执行这张表的操作如果触发器被触发的时候,另外一张表页会随着改变

创建SQL Server触发器

create trigger 触发器名(触发器名可以随便写)
on 表名 for insert
as
修改表的代码

dadasdas

示例

假如有两张表一张bookTypes(分类表)和一张Books(图书表) 假如你想要增加一边图书的时候分类表里面的数量页随着改变,这时候就用到触发器了
SQL Server 触发器
–当我在书籍表插入一条数据,触发一个事件
–这个事件,将会自动在分类表,将该书籍的对应的类别的库存加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
相关标签: sql