如何重置 SQL Server 标识(SQL Server ID)

作者:vkvi 来源:ITPOW(原创) 日期:2009-12-4

删除 SQL Server 表记录后,想在新插入记录时,标识从 1 开始编号。

dbcc checkident('表名', RESEED, 0)

注意第三个参数是 0:由于这个表曾经有个记录,那么新插入第一条记录时,其标识就是 0 的下一个数,即 1;如果这个表从来没有插入过记录,那么新插入第一条记录时,其标识就是 0。

现在有这么一种捣蛋情况:

表中有不连续的记录,其标识值分别是 2、4,运行dbcc checkident('表名', RESEED, 0) 后:

  • 插入一条记录,成功,标识值为 1。
  • 再插入一条记录,很可能失败,为什么很可能失败呢,因为标识就是用来唯一标识一条记录的,那么您肯定将其设置为主键了,标识 2 的记录已经存在了,再插入就失败了。
  • 再插入一条记录,成功,标识值为 3。
  • 再插入一条记录,很可能失败……
  • 再插入一条记录,成功,标识为 5。

更多

关于这个函数的更多信息,请在 SQL Server 帮助中搜索 dbcc checkident。

TRUNCATE TABLE

您可能会说 TRUNCATE TABLE 也会将标识重置,为什么不用它呢?

  • TRUNCATE TABLE 会删除表中的所有记录,可能与您的需求不符。
  • TRUNCATE TABLE 对应的表主键如果是其他表的外键,那么它无法执行。

更多信息请参见:TRUNCATE TABLE 和 DELETE

相关阅读

相关文章