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;

SQL Server事务回滚对自增键的影响的更多相关文章

  1. Sql Server 事务/回滚

    ,'test1','test1') commit tran t1  ---提交事务 功能:实现begin tran 和commit tran之间的语句,任一如果出现错误,所有都不执 事务不是有错就回滚 ...

  2. 为什么mysql事务回滚后, 自增ID依然自增

    事务回滚后,自增ID仍然增加,回滚后,自增ID仍然增加.比如当前ID是7,插入一条数据后,又回滚了.然后你再插入一条数据,此时插入成功,这时候你的ID不是8,而是9.因为虽然你之前插入回滚,但是ID还 ...

  3. 【SQL】事务回滚

    事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服 ...

  4. 哪些异常是RuntimeException?Sql异常属于RuntimeException吗?Spring下SQL异常事务回滚

    一,为什么框架中根本没有对Exception的一般子类进行回滚配置,异常发生时,事务都进行了回滚 ,说好的只会对RuntimeException(Unchecked 非受检异常)回滚呢? 此时,我们就 ...

  5. SQL的事务回滚操作带案例分析

    SET XACT_ABORT on  BEGIN TRAN  INSERT INTO [PDA_Action] VALUES ('採购入库1')  INSERT INTO [PDA_Action] V ...

  6. SQL 事务回滚

    事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服 ...

  7. [SQL]事务回滚详解及示例

    存储过程中的 SET XACT_ABORT ON 和事务 在存储过程中写SET XACT_ABORT ON 有什么用? SET XACT_ABORT ON是设置事务回滚的! 当为ON时,如果你存储中的 ...

  8. SQL Server 事务与锁

    了解事务和锁 事务:保持逻辑数据一致性与可恢复性,必不可少的利器. 锁:多用户访问同一数据库资源时,对访问的先后次序权限管理的一种机制,没有他事务或许将会一塌糊涂,不能保证数据的安全正确读写. 死锁: ...

  9. SQL SERVER 事务的使用(tran)

    sql server事务的使用是为了确保数据的一致性. 通常写法 begin tran --sql 语句1 --sql 语句2 --sql 语句3 commit tran 上面写法存在隐患,当操作(增 ...

随机推荐

  1. Tkenter之API测试系统界面设计

    # -*- coding: UTF-8 -*- from Tkinter import * tk=Tk() tk.geometry('500x400+500+200') tk.title('API测试 ...

  2. Spring Boot- 设置拦截打印日志

    import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; import org.aspe ...

  3. node 渲染html模板配置

    node 渲染html模板配置 安装swig模块 npm install swig--save - dev 加载swig模块 var swig = require('swig'); 模板配置 //第一 ...

  4. Delphi操作XML - 冰雪傲骨

    Delphi操作XMl,只要使用 NativeXml.我是用的版本是4..NativeXML的使用方法比较简单,但是功能很强大. XE2的话,要在simdesign.inc后面加上: // Delph ...

  5. 关于float与double区别

    Problem A: 啤酒和饮料 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 175  Solved: 29 [Submit][Status][We ...

  6. mysql基本语句1

    操作MySQL数据库 向表中插入数据 insert 语句可以用来将一行或多行数据插到数据库表中, 使用的一般形式如下: insert [into] 表名 [(列名1, 列名2, 列名3, ...)] ...

  7. Eclipse_常用技巧_03_字母大小写转换快捷键

    eclipse中字母大小写转换快捷键: ctrl+shift+x 转为大写 ctrl+shift+y 转为小写

  8. 关于C++多态的理解

    多态,即多种形态.对于具有继承关系的一类对象,子类表现出了父类的某些特性,但是表现的不一样,这就是多态的现实体现.例如动物可以发声,但是狗是旺旺,狗是动物的一种,但是表现了不同的叫的特点,这就是多态. ...

  9. codeforces 710A A. King Moves(水题)

    题目链接: A. King Moves 题意: 给出king的位置,问有几个可移动的位置; 思路: 水题,没有思路; AC代码: #include <iostream> #include ...

  10. codeforces 652D D. Nested Segments(离散化+sort+树状数组)

    题目链接: D. Nested Segments time limit per test 2 seconds memory limit per test 256 megabytes input sta ...