SQL Server 触发器
程序员文章站
2022-03-09 09:12:12
...
这斜体样式里写自定义目录标题
触发器的作用
触发器是一个特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。简单的来说就是在一个数据库的表上定义一个触发器,如果这个触发器的作用是修改另外一张表,当执行这张表的操作如果触发器被触发的时候,另外一张表页会随着改变
创建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
上一篇: 数据学习(十七)-时间序列分析和预测实践
下一篇: php一共有多少函数
推荐阅读
-
Oracle8i和MS SQL Server7.0比较
-
自定义用于ASP Web站点的 SQL 7.0 数据库(1)
-
mysql中备份还原.sql/zip/sql.zip/gzip文件方法
-
在SQL中该如何处理NULL值
-
Oracle体系结构及备份(四)server-process
-
T-Sql(四)表关联和视图(view)
-
解决mysql时区与系统时区不一致问题。异常:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized o
-
PHP中的$_SERVER["HTTP_REFERER"]用法浅谈
-
linux下配置lamp时候出现The requested URL /info.php was not found on this server问题
-
一篇文章带你深入了解Mysql触发器