回滚事务不会减少自动递增列吗?

时间:2017-06-22 00:50:23

标签: sql tsql auto-increment decrement

T-SQL:

 Column A     Column B     Column C     Column D     Column E     Column F
 --------     --------     --------     --------     --------     --------
 UR001        Data1        UR002        Data2        UR003        Data3   
 UR004        Data4        UR001        Data1                                         
 UR005        Data5                                  UR001        Data1
 UR003        Data3

执行上面的t-sql然后BEGIN TRANSACTION Insert (col1,col2,col3) values (1,2,3) MS-SQL不会减少自动递增列。知道为什么吗?

我找到了答案here。这个答案是否适用于MS-SQL?

1 个答案:

答案 0 :(得分:1)

是的,SQL服务器一旦分配就不会“重复使用”身份号码。更重要的是,不能保证值为consecutive

  

事务中的连续值 - 事务插入   不保证多行获取行的连续值   因为表上可能会出现其他并发插入。如果值   必须是连续的,然后交易应使用独占锁   在桌面上或使用SERIALIZABLE隔离级别。

您可以使用DBCC CHECKIDENT更改标识值,但最好将它们视为唯一系统ID,并且不要假设有关订单的任何内容。

你可能还想看看SEQUENCE,它比IDENTITY有一些优势。