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 提交了。
    
    
    
  • 相关阅读:
    《阿里感悟》- 技术人员的职业规划
    DIV Vue-cil脚手架
    Django PIL模块(生成随机验证码)
    Django auth模块(用户认证组件)
    Django 数据处理流程
    Django 中间件
    Django ORM (2)
    Django组件——Form
    Django orm
    Django urls
  • 原文地址:https://www.cnblogs.com/xiaonanmu/p/4988925.html
Copyright © 2011-2022 走看看