【发布时间】:2010-10-05 08:07:05
【问题描述】:
我从 SQL Server 数据库的表中删除了一些记录。
表格中的 ID 如下所示:
99 100 101 1200 1201……
我想删除后面的记录(ID > 1200),然后我想重置自动增量,以便下一个自动生成的 ID 为 102。所以我的记录是连续的,有没有办法在 SQL Server 中做到这一点?
【问题讨论】:
-
请不要说“不要这样做”。当我问如何做某事而我得到的只是不做时,我讨厌它。是的,重置身份可能会导致外键问题,但前提是您不知道相应的数据库和程序。在计划删除后重置身份有很好的理由——他们被称为审计员。审计员讨厌看到漏洞,所以要填补漏洞,以可控的方式进行,并确保保持外键约束。
-
@spyder,您是否知道如果回滚记录插入而不仅仅是删除,您将有间隙?您无法通过自动增量避免间隙,尝试是愚蠢的。我曾在一家审计机构工作过,称职的审计员可以向他们解释这一点。此外,如果您有适当的审计表,他们可以看到这些记录发生了什么。或者,如果出于法律原因必须不存在任何漏洞(这种情况很少见),那么只有不称职的开发人员才会使用自动增量,而审计人员会感到不安。
标签: sql-server auto-increment delete-row