在SQL中删除标识ID

时间:2011-07-27 21:46:21

标签: sql sql-server

如果我有ID列,它是主键并且Identity设置为TRUE,则插入每一行应该增加我的ID。我的问题是,如果我有100行和一个函数(在代码中的某个地方)来选择随机行(rand(1,101)),如何处理一个情况,当我删除一行而随机函数失败如果选中一个。我可以在代码中管理这个异常,但是想知道SQL中是否有办法用连续ID填充这些删除的行间隙。

1 个答案:

答案 0 :(得分:5)

因“身份”而猜测SQL Server

使用TOP 100.. ROW_NUMBER()代替生成100个连续值并过滤 值。

或使用TOP 1..ORDER BY NEWID()选择随机行。

除了作为代理键之外,

内部IDENTITY值没有任何意义。请注意,INSERT失败也会增加IDENTITY值,而不仅仅是删除。