浅析SQL Server中包含事务的存储过程

 更新时间:2014年08月15日 09:28:21   投稿:hebedich  
数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完整地执行,要么完全地不执行。那么在存储过程里添加事务,则可以保证该事务里的所有sql代码要么完全执行要么完全不执行。

先来看一个概念:

  数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完整地执行,要么完全地不执行。那么在存储过程里添加事务,则可以保证该事务里的所有sql代码要么完全执行要么完全不执行。

  举个简单的带事务的存储过程:

Begin
    Set NOCOUNT ON; --不返回影响行数
    Set XACT_ABORT ON; --使用存储过程执行事务需要开启XACT_ABORT参数(默认为OFF)

      delete from table1 where name='' --删除数据sql1
    begin tran tran1 --开始一个事务tran1
      delete from table1 where name='' --删除数据sql2
    save tran tran2 --保存一个事务点tran2
      update table2 set name='' where id='' --修改数据sql3

      if @@error<>0 --判断修改数据有没有错误(@@error表示返回与@@ERROR 最近的语句(即sql3)的非零的错误码,没有错误则返回0)

        begin
          rollback tran tran2 --回滚事务到tran2的还原点
          commit tran tran1 --提交事务tran1
        end
      else --没有出错则提交事务tran1
        commit tran tran1 --提交事务tran1
  End

  如果sql3执行失败,则会回滚到事务tran2的创建处(相当于出来sql1和sql2执行外都未执行)。

相关文章

  • 常用SQL语句查询分享

    常用SQL语句查询分享

    本文通过几个小例子,给大家分享一下常用SQL常用的语句,非常的简单实用,有需要的小伙伴可以参考下。
    2016-01-01
  • SqlServer 扩展属性的介绍

    SqlServer 扩展属性的介绍

    SqlServer 扩展属性的介绍,需要的朋友可以参考一下
    2013-03-03
  • SQL Server代理服务无法启动怎么办

    SQL Server代理服务无法启动怎么办

    SQL Server代理服务无法启动怎么办?这篇文章主要介绍了SQL Server代理服务无法启动的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • SQLServer 批量插入数据的两种方法

    SQLServer 批量插入数据的两种方法

    在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题。下面介绍SQL Server支持的两种批量数据插入方法:Bulk和表值参数(Table-Valued Parameters)。
    2009-07-07
  • SQL Server中的数据类型Text与varchar(max)有什么区别?

    SQL Server中的数据类型Text与varchar(max)有什么区别?

    在SQL Server中,处理文本数据时,我们经常会遇到两种数据类型:Text和varchar(max),尽管它们都可以用来存储大量的文本数据,如果可能的话,考虑将Text数据类型迁移到varchar(max)或nvarchar(max)数据类型,以利用新功能和潜在的性能优势
    2025-03-03
  • MSSQL中进行SQL除法运算结果为小数却显示0的解决方法

    MSSQL中进行SQL除法运算结果为小数却显示0的解决方法

    这篇文章主要介绍了MSSQL中进行SQL除法运算结果为小数却显示0的解决方法,需要的朋友可以参考下
    2015-10-10
  • sqlserver中的自定义函数的方法小结

    sqlserver中的自定义函数的方法小结

    “自定义函数”是我们平常的说法,而“用户定义的函数”是 SQL Server 中书面的说法。
    2010-06-06
  • SQL中NOT IN与NOT EXISTS不等价的问题

    SQL中NOT IN与NOT EXISTS不等价的问题

    在对SQL语句进行性能优化时,经常用到一个技巧是将IN改写成EXISTS,本文主要介绍了SQL中NOT IN与NOT EXISTS不等价的问题,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • 使用Navicat从SQL Server导入表数据到MySQL的操作流程

    使用Navicat从SQL Server导入表数据到MySQL的操作流程

    这篇文章主要介绍了使用Navicat从SQL Server导入表数据到MySQL的操作流程,文中通过图文结合的方式讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-12-12
  • 对SQL Server中敏感数据进行加密解密的操作方法

    对SQL Server中敏感数据进行加密解密的操作方法

    近几年有不少关于个人数据泄露的新闻(个人数据通常包含如姓名、地址、身份证号码、财务信息等),给事发公司和被泄露人都带来了不小的影响,所以本文给大家介绍了如何对SQL Server中的敏感数据进行加密解密,需要的朋友可以参考下
    2024-05-05

最新评论