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;

  • 相关阅读:
    配置文件管理
    Nacos学习
    dockerCompose学习
    Dockerfile
    vue生命周期
    github使用
    推荐系统
    js笔记17
    js笔记16
    js笔记15
  • 原文地址:https://www.cnblogs.com/wangboke/p/11059647.html
Copyright © 2011-2022 走看看