• 数据库事物用法 SET XACT_ABORT ON


    数据库事物的用法和作用就不再重复,写一下在实战当中遇到的问题,代码如下:

    begin tran --开始执行事务 
        --语句一

        update  set acount = acount-100 where person = 1

       --语句二

        update  set acount = acount+100 where person = 2

       --语句三

         insert into T_IMP_LOG values (1,2,100)


    if @@error<>0 --判断如果语句有任何一条出现错误
    begin rollback tran --开始执行事务的回滚 
    return 0
    end
    else   --如何都执行成功
    begin 
    commit tran --执行这个事务的操作
    return 1
    end
     在上面代码中,我遇到的问题是:语句二出错,语句一仍然执行,语句三不执行,本以为添加了事物控制就能全部回滚,后来查了资料才知道需要加上SET XACT_ABORT ON。

    语法
    SET XACT_ABORT { ON | OFF }

    注释
    当 SET XACT_ABORT 为 ON 时,如果 Transact-SQL 语句产生运行时错误,整个事务将终止并回滚。为 OFF 时,只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。编译错误(如语法错误)不受 SET XACT_ABORT 的影响。

    对于大多数 OLE DB 提供程序(包括 SQL Server),隐性或显式事务中的数据修改语句必须将 XACT_ABORT 设置为 ON。唯一不需要该选项的情况是提供程序支持嵌套事务时。有关更多信息,请参见分布式查询和分布式事务。

    SET XACT_ABORT 的设置是在执行或运行时设置,而不是在分析时设置。

    如果想要事物支持出错全部回滚,那么上面的代码如下:

    SET XACT_ABORT  ON

    begin tran --开始执行事务 
        --语句一

        update  set acount = acount-100 where person = 1

       --语句二

        update  set acount = acount+100 where person = 2

       --语句三

         insert into T_IMP_LOG values (1,2,100)


    if @@error<>0 --判断如果语句有任何一条出现错误
    begin rollback tran --开始执行事务的回滚 
    return 0
    end
    else   --如何都执行成功
    begin 
    commit tran --执行这个事务的操作
    return 1
    end

    转载:http://blog.csdn.net/fengchao1000/article/details/7717841

  • 相关阅读:
    如何把textfield或者textview中长按出现的(全选,复制,粘贴)显示成中文
    免费真机调试 -- Xcode7
    Android性能测试工具 Emmagee
    iOS 开发 入门:使用Ad Hoc 进行用户测试
    栈与队列的区别
    iOS中ASI和AFN的区别
    iOS开发之监测网络状态
    xcode设置项目图标玻璃镜效果
    isEqual,isEqualTostring,==三者的区别
    iphone匹配邮箱的正则表达式
  • 原文地址:https://www.cnblogs.com/louby/p/6559689.html
Copyright © 2020-2023  润新知