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

Rollback transaction does not decrements auto incremented column?

T-SQL:

BEGIN TRANSACTION

Insert (col1,col2,col3)

values (1,2,3)

执行上面的 t-sql 之后 ROLLBACK TRANSACTION MS-SQL 不会递减自动递增的列。知道为什么吗?

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

是的,SQL 服务器不会 "re-use" 一旦分配身份号码。更重要的是,不能保证这些值将是 consecutive:

Consecutive values within a transaction – A transaction inserting multiple rows is not guaranteed to get consecutive values for the rows because other concurrent inserts might occur on the table. If values must be consecutive then the transaction should use an exclusive lock on the table or use the SERIALIZABLE isolation level.

您可以使用 DBCC CHECKIDENT 更改标识值,但最好将它们视为唯一的系统 ID,并且不要假定任何顺序。

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