【发布时间】:2014-01-12 18:29:23
【问题描述】:
我有在一张表中插入几行的事务。
假设:我的表的最大 ID 为 100,然后我需要再插入 100 行,其中完成时最大 ID 将为 200。其他事务等待我的事务完成,它们保留编号 201,不管我的交易是否成功完成。
回滚事务无助于将 ID 重新设置为 100,因为如果我将身份声明放在事务之外,其他事务具有更高的优先级并且它们已经保留了 201 号。
如果我的事务回滚,但在其他事务获取下一个 ID 之前,Hos 将身份列重新设置为 100?
我希望我已经足够清楚了。
【问题讨论】:
-
如果您需要没有间隙的序列,请不要使用
IDENTITY。它不是为此目的而设计的。为什么需要这个? -
另外,在 Sql Server 2012 中,IDENTITY columns will increment by 1000 when the server is restarted
标签: sql-server transactions sql-server-2008-r2