• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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 --提交事务
    
    

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

    您可能感兴趣的文章:
    • MSSQL 事务说明
    • c#实现sqlserver事务处理示例
    • 使用Sqlserver事务发布实现数据同步(sql2008)
    • SQLServer分布式事务问题
    • Sqlserver 存储过程中结合事务的代码
    • Transactional replication(事务复制)详解之如何跳过一个事务
    上一篇:SQL Server UPDATE语句的用法详解
    下一篇:sql编程工具Sql Prompt下载及安装破解图文教程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    MSSQL事务的存储过程 MSSQL,事务,的,存储,过程,