1

假设我在一个表上有 ID 列并且最大 ID 值为 100。然后我在事务中在该表中插入 50 行,最大 ID 将为 150。但事务被回滚。但下一个 ID 值为 151 ,not 101。表示回滚事务时最大ID值不回滚。如何解决这个问题?

4

1 回答 1

2

这就是 IDENTITY 列的工作方式,并且非常符合设计要求。原因是值被分发但没有回滚以提高效率。如果您必须为每个分配了标识值的事务锁定整个表,那么您绝对会扼杀并发性和性能。老实说,您不应该关心差距,因为您无法使用 IDENTITY 列来阻止它们。有一些变通方法,但它们也会扼杀并发性和性能。

于 2013-04-22T19:38:14.853 回答