如果我有ID列,它是主键并且Identity设置为TRUE,则插入每一行应该增加我的ID。我的问题是,如果我有100行和一个函数(在代码中的某个地方)来选择随机行(rand(1,101)),如何处理一个情况,当我删除一行而随机函数失败如果选中一个。我可以在代码中管理这个异常,但是想知道SQL中是否有办法用连续ID填充这些删除的行间隙。
答案 0 :(得分:5)
因“身份”而猜测SQL Server
使用TOP 100.. ROW_NUMBER()
代替生成100个连续值并过滤 值。
或使用TOP 1..ORDER BY NEWID()
选择随机行。
内部IDENTITY值没有任何意义。请注意,INSERT失败也会增加IDENTITY值,而不仅仅是删除。