强制自动生成ID列为MS SQL表中的“下一个免费号码”

时间:2019-07-17 12:58:09

标签: sql sql-server sql-server-2005

我在MS SQL数据库中有一个带有经典ID标识列(自动递增)的表。实际上,该表大约有40万条记录,但是最大的ID号是2 500000。这是因为有很多操作需要使用 删除 5000条记录,并在 INSERT 5000条记录之后。 如何强制数据库使用第一个免费ID号? 因此,如果删除ID为5250的行,则意味着在下一个INSERT操作中将使用5250号。

其他信息:表之间的关系中未使用ID列,也未导入ID列,但对于此表,某些索引处于活动状态(由于效率低)。

我找到了用于重置ID的命令,但不确定是否可以使用它:

DBCC CHECKIDENT(“ SomeTable”,RESEED,1)

如果在每次DELETE操作后将ID重新设置为1,这是一种安全的方法吗? 在这种情况下,其他记录的ID会保持不变吗? 因此,如果下一个ID号为ex。 5250是免费的,将用于下一个新记录吗?

或者也许有更好的方法?

预期结果: 现在ID是1,2,3,4,5 如果删除ID为3的行,则下一条INSERT语句将生成ID 6,但我更喜欢使用免费ID号,因此应为3。

0 个答案:

没有答案