使用标识列来确定行创建的顺序是不好的做法?

时间:2011-06-08 17:29:51

标签: sql sql-server

  

可能重复:
  Can I use a SQL Server identity column to determine the inserted order of rows?

如果重新接种标识列,则不能用它来确定行插入的顺序,但我没有理由重新标记该标识。

为什么我不应该使用标识列来确定创建顺序?

2 个答案:

答案 0 :(得分:2)

因为它不可靠将是我不会使用它的原因。您可能有两个进程同时询问身份值,进程1获取第一个值,进程2获得第二个值但进程2实际上提前完成了事务,因此之前插入了。如果您想知道实际插入记录的顺序,则插入日期的日期时间字段是唯一可靠的选择。

答案 1 :(得分:1)

这不是一个好习惯。例如,在同时事务中对表执行插入的两个进程可以在某些服务器中分配有一组id,因此从一个事务插入的任何行的id都比从另一个事务插入的任何行的id小。此外,这有时会导致ID序列中的间隙。并且还可能存在其他可能发生意外情况的情况。

简而言之,自动增量的ID 并不总是保证是连续的和递增的序列。