MSSQL事务的存储过程

 更新时间:2014年08月07日 09:49:15   投稿:hebedich  
这篇文章主要介绍了MSSQL事务的存储过程,需要的朋友可以参考下

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

房型表:RoomType

      
    
房间表:Room

 

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

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

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

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

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

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

代码:

 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 --提交事务

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

相关文章

  • SQL中PIVOT函数的用法小结

    SQL中PIVOT函数的用法小结

    PIVOT 是 SQL Server 中的一个功能,用于将行转换为列,本文主要介绍了SQL中PIVOT函数的用法小结,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • 经典SQL语句大全

    经典SQL语句大全

    非常不错的和excel等文档实例结合的sql,下列语句部分是Mssql语句,不可以在access中使用。
    2008-06-06
  • 必须会的SQL语句(八) 数据库的完整性约束

    必须会的SQL语句(八) 数据库的完整性约束

    这篇文章主要介绍了sqlserver中数据库的完整性约束使用方法,需要的朋友可以参考下
    2015-01-01
  • SQL Server如何建表的详细图文教程

    SQL Server如何建表的详细图文教程

    创建表之前一定要先了解数据类型与约束,这样我们才能创建正确的表,下面这篇文章主要给大家介绍了关于SQL Server如何建表的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • sql2000挂起无法安装的问题的解决方法

    sql2000挂起无法安装的问题的解决方法

    关于:以前的某个程序安装已在安装计算机上创建挂起的文件操作 解决办法
    2008-11-11
  • 生成300个不同的随机数的SQL语句

    生成300个不同的随机数的SQL语句

    最近在做一个项目,涉及到要生成N个8位的不重复的纯数字随机数作为优惠码,研究了一番,把结果分享给大家
    2014-08-08
  • SQL Server中Check约束的学习教程

    SQL Server中Check约束的学习教程

    这篇文章主要介绍了SQL Server中Check约束的学习教程,包括对启用Check约束来提升性能的介绍,需要的朋友可以参考下
    2015-12-12
  • SQL Server语句日期格式查找的方法示例详解

    SQL Server语句日期格式查找的方法示例详解

    在SQL Server中,处理日期格式和查找特定日期格式的记录是一个常见的需求,SQL Server提供了多种函数和格式选项来处理和比较日期,以下是一个详细的示例,展示了如何根据特定日期格式查找记录,需要的朋友可以参考下
    2024-09-09
  • SQLSERVER 出现死锁查找方法和解决办法(推荐)

    SQLSERVER 出现死锁查找方法和解决办法(推荐)

    这篇文章主要介绍了SQLSERVER 出现死锁查找方法和解决办法(推荐),文中讲解了查询死锁语句,杀死死锁的解决方法,需要的朋友可以参考下
    2024-02-02
  • sqlserver清空service broker中的队列的语句分享

    sqlserver清空service broker中的队列的语句分享

    在我们开发service broker应用时候,可能用于测试或者客户端没有配置正确等导致服务端队列存在很多垃圾队列,不便于我们排查错误,我们可以使用SQL脚本来清空服务端这些垃圾数据
    2011-08-08

最新评论