gpt4 book ai didi

MSSQL事务的存储过程

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章MSSQL事务的存储过程由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

在酒店管理系统开发中,我们会创建房间表和房间类型表(房型表)这两个表,如下图所示:

房型表:RoomType 。

            房间表:Room 。

MSSQL事务的存储过程

首先这两个表的关系:Room是从表,RoomType是主表,两表有主外键关系,RoomType.rTypeId=Room.rTypeId 。

分析这两个表,我们会发现这样一个问题:在房间表和房型表管理中,当我们修改或者删除一个RoomType表,对应的Room表我们也要做修改和删除,那么我们怎么解决这个问题呢?首先可以在数据库中设置级联删除,或者利用触发器也可以解决、、、这些方法都有一定的弊端,在实际开发中,我们会采取使用事务来解决这个问题,这种方法简单而且开发效率高,容易维护.

要求:在删除RoomType的同时把Room表中存在该房型的也删除. 。

思路:在删除RooType的时候,我们通过RoomType.rTypeId=Room.rTypeId找到Room中存在该房型的记录,把也它删掉.

说明:删除不是把整条记录从数据库删除,是将数据标识改为1,0是代表未删除.

下面介绍删除的存储过程:

代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ALTER procedure [dbo].[usp_DelToomType] --创建删除房型的存储过程
@rTypeId int --房型参数
as
begin transaction --开始事务
  declare @error int --定义一个变量标识错误号
  update RoomType set rTypeIsDel=1 where rTypeId=@rTypeId --根据条件删除房型,rTypeIsDel=1标识删除,0标识未删除
  set @error+=@@ERROR
  if(@error<>0) --不等于0说明这一句执行出现错误
  rollback transaction --事务回滚
  update Room set roomIsDel=1 where rTypeId=@rTypeId --根据条件删除房间
  set @error+=@@ERROR
  if(@error<>0) --不等于0说明这一句执行出现错误
  rollback transaction --事务回滚
else
   commit transaction --提交事务

最后,数据层直接调用存储过程的方法即可完成删除房型的同时把存在该房型的房间也删除.

最后此篇关于MSSQL事务的存储过程的文章就讲到这里了,如果你想了解更多关于MSSQL事务的存储过程的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com