【发布时间】:2013-07-11 09:39:17
【问题描述】:
当我使用 SQL Server 2008 及其 Management Studio 删除表中的记录,然后插入新记录时,主键列的顺序不正确。
假设我用record_id = 5 删除 Record5。表中剩下 4 条记录,即Record1,Record2,Record3,Record4。
现在当我插入一条新记录时.. 它的ID(主键)自动设置为 6。我需要 SQL Server 将其设置为 5。
因为当我在 Asp.Net (c#) 的 gridView 中显示此表时看起来很奇怪,我的表的 record_id 列序列类似于 1, 2, 3, 17, 18, 29 等,
看起来很糟糕。请帮忙。
谢谢
【问题讨论】:
-
您不应该向用户公开这些 ID 值 - 如果您需要一个用于显示目的的数字,请考虑在您的
SELECT语句中调用ROW_NUMBER()。您应该将标识值视为恰好能够存储在int中的不透明 blob - 您不应该以任何方式依赖它们的实际数值。 -
@Damien_The_Unbeliever :请帮助我摆脱我所处的这种奇怪情况......你的建议确实很有价值,但目前无法接受。我需要摆脱困境。请帮忙。
-
我假设,如果记录 1 被删除,你希望所有现有的行也被 1 洗牌吗?如果是这样,当该列被标记为
IDENTITY列时无法完成 - 所以 any 修复将需要在某处重新工作 - 为什么不正确修复? -
好吧,我根本不认为你在任何情况下,这里有任何问题。如果记录 5 被删除,它将保持删除状态。你不能再有 5 个,接下来是 6 个。我不同意它看起来很糟糕。
-
@RemusRusanu:原文问为什么身份列没有严格增加。这个问题询问您如何获得严格增加的数字。那是怎么复制的?
标签: sql sql-server-2008