Answers:
您可以通过以下方式重置身份值
DBCC CHECKIDENT('tableName', RESEED, 0)
因此,下次您插入TableName时,插入的标识值为1。
当您从表中删除行时,它不会重置身份值,但会不断增加它。就像您的情况一样。
现在,当您截断该表时,它将把Identity值重置为其表的原始Seed值。
请参考:SQL SERVER – DELETE,TRUNCATE和RESEED Identity,以获取详细的示例以及截断和删除之间的区别的一些很好的解释。
Kin向您展示了如何重置IDENTITY值,但是在开发环境之外,当您真正要删除所有数据时,为什么需要这样做?
我希望您在生产时不打算保持IDENTITY值的连续序列。我希望您不是真的在编写代码来对IDENTITY值进行硬编码。如果这些是有意义的ID值,则应停止使用IDENTITY属性。
有一些事情可以阻止这种情况的发生:
简而言之,如果您关心差距或希望给这些值指定特定含义,请停止使用IDENTITY。删除并重新创建表,然后在需要删除值并重新填充时,执行更新或对该列执行带有硬编码值的插入。
顺便说一句,主键和身份不是同一回事。除非您明确定义身份列,否则身份列不是主键,并且您当然可以拥有不是身份列的主键。
如果只需要消除没有跟随标识字段增量值的最后几行,则有一种简单而安全的方法:
到此为止。