假设我在表上有ID列,并且最大ID值为100。 然后我在一个事务中在此表中插入50行,最大ID将为150。 但是事务被回滚。但是下一个ID值是151,而不是101。 这意味着在回滚事务时不会回滚最大ID值。 如何解决这个问题?
答案 0 :(得分:1)
这就是IDENTITY列的工作方式,它非常符合设计。原因是这些值被分发但没有回滚以提高效率。如果必须为分配了标识值的每个事务锁定整个表,那么绝对会破坏并发性和性能。老实说,你不应该关心差距,因为你不能用IDENTITY列阻止它们。有解决方法,但它们也会破坏并发性和性能。