如何重置SQL Server中的自动增量?

时间:2017-05-09 03:53:18

标签: sql sql-server database

我的数据库遇到了这个问题,即使已经删除了id列,它也会继续增加id列。为了更好地理解我的意思,这是我的gridview的截图:

enter image description here

正如你从id栏中看到的那样,一切都很好,从11 - 16.但它突然从25 - 27跳过。我想要发生的是,当我删除一个项目时,我希望它从最后开始id为16.所以下一个id应为17.我希望这对你们有意义。

这也是SQL脚本的一部分:

2000

2 个答案:

答案 0 :(得分:1)

您可以使用:

Object table:
#   Name              VirtSize    RVA     PhysSize  Phys off  Flags   
--  --------          --------  --------  --------  --------  --------
01  CODE              00052714  00001000  00052800  00000400  60000020 [CER]
02  DATA              000013D8  00054000  00001400  00052C00  C0000040 [IRW]
03  BSS               00000B7D  00056000  00000000  00054000  C0000000 [RW]
04  .idata            00001F86  00057000  00002000  00054000  C0000040 [IRW]
05  .edata            0000139F  00059000  00001400  00056000  50000040 [IRS]
06  .reloc            0000588C  0005B000  00005A00  00057400  50000040 [IRS]
07  .rsrc             00004800  00061000  00004800  0005CE00  50000040 [IRS]

Key to section flags:
  C - contains code
  E - executable
  I - contains initialized data
  R - readable
  S - shareable
  W - writeable

在使用之前,请访问链接:https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkident-transact-sql

答案 1 :(得分:1)

数据库中的主要自动增量键用于唯一标识给定行,不应给出任何业务含义。因此,保持主键不变,并添加另一列,如 guitarItemsId 。然后,当您从数据库中删除记录时,您可能希望发送一个额外的UPDATE语句,以便减少 guitarItemsId 大于 guitarItemsId 的所有行的 guitarItemsId 列。你目前正在删除。

另外,请记住,永远不要修改关系数据库中主键的值,因为可能有其他表将其作为外键引用,修改它可能会违反引用约束。