zoukankan      html  css  js  c++  java
  • SQL Server事务回滚对自增键的影响

    SQL Server事务回滚时是删除原先插入导致的自增值,也就是回滚之前你你插入一条数据导致自增键加1,回滚之后还是加1的状态

    --如果获取当前操作最后插入的identity列的值:
    select @@IDENTITY
    --如果要获取某表的最后的identity列的值:
    select IDENT_CURRENT('表名')

    --如果要模拟抛出异常可以用RAISERROR 

    --RAISERROR('错误的描述',错误的严重级别代码,错误的标识,错误的描述中的参数的值(这个可以是多个),一些其它参数)

    --PRINT '出现异常,错误编号:' + convert(varchar,error_number()) + ',错误消息:' + error_message()

    BEGIN TRAN Tran_Test;--开始事务
    DECLARE @tran_error INT;
    SET @tran_error = 0;
    BEGIN TRY
    INSERT INTO Table
    RAISERROR ('引用单据已被修改,操作失败!', 16, 1);
    END TRY
    BEGIN CATCH
    PRINT '出现异常,错误编号:' + CONVERT(VARCHAR, ERROR_NUMBER()) + ',错误消息:'
    + ERROR_MESSAGE();
    SET @tran_error = @tran_error + 1;
    END CATCH;
    IF ( @tran_error > 0 )
    BEGIN
    --执行出错,回滚事务
    ROLLBACK TRAN;
    PRINT '!';
    END;
    ELSE
    BEGIN
    --没有异常,提交事务
    COMMIT TRAN;
    PRINT '!';
    END;

    SELECT SCOPE_IDENTITY();
    SELECT @@IDENTITY;

  • 相关阅读:
    Spring MVC的常用注解(一)
    Spring MVC接口实例
    MVC模式和Spring MVC初识
    Hbase数据结构和shell操作
    Hbase的安装和配置
    ZooKeeper安装、配置和使用
    hadoop的安装和配置
    VMware Workstation安装CentOS 7和开发环境
    Java基础-内部类
    SSM三大框架整合
  • 原文地址:https://www.cnblogs.com/wangboke/p/11059647.html
Copyright © 2011-2022 走看看