zoukankan      html  css  js  c++  java
  • EXECUTE 后的事务计数指示缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。上一计数 = 1,当前计数 = 2

    理解这一句话:

    一个begin tran会增加一个事务计数器,要有相同数量的commit与之对应,而rollback可以回滚全部计数器

    这个错误一般是出现在嵌套事务中.

    测试环境 sql 2008

    例如:

    begin transaction t1

    --这里是逻辑处理

     begin transaction t2
      --建立一个事务点
      save transaction point2
      --这里是逻辑处理
      --这里报错了,需要回滚事务
    if @@error<>0
      begin
        goto roll2
      end
      
      roll2
      begin
        rollback transaction point2
      end
      commit transaction t2
      
    commit transaction t1
    -------------------------------------------------------------------------
    需要注意:

    事务t2里面报错后,如果直接使用rollback transaction 进行回滚操作,会同时消除t1 和 t2 的计数器 而导致出现上述错误。
    如果只是 回滚到指定点point2,不提交事务t2,将会导致begin tran  和 commit 不对应,也会出现上述错误。
    所以 
    事务t2里面报错后,先回滚到指定点point2 ,再将事务t2 提交了。
    
    
    
  • 相关阅读:
    JavaWeb笔记
    Session案例_登录注销
    会话
    Cookie入门
    jsp入门
    if else优化
    cheap-source-map--不显示源码 、source-map--显示源码 、 eval--最快的编译办法
    npm run dev 克隆报错
    $emit和$on的用法
    npm
  • 原文地址:https://www.cnblogs.com/xiaonanmu/p/4988925.html
Copyright © 2011-2022 走看看