SQL Server已删除标识列

SQL Server已删除标识列,sql,sql-server,Sql,Sql Server,在SQLServer2010中,我删除了一些使用标识字段的列。 我喜欢在标识列被原始值删除的位置插入行,但不确定如何执行 我尝试编辑,但标识列显示为灰色 UPDATE table 您需要重新设置标识的种子: dbcc checkident (mytable, reseed, 30) 你能解释一下为什么你关心你的身份栏中是否有空白吗?如果您只是希望标签旁边有一些漂亮的ID号(并且不担心其他表中的相关数据,或者即使删除了ID 1,第二行是否仍保留ID 2),那么您始终可以在运行时派生这

在SQLServer2010中,我删除了一些使用标识字段的列。 我喜欢在标识列被原始值删除的位置插入行,但不确定如何执行

我尝试编辑,但标识列显示为灰色

    UPDATE table 

您需要重新设置标识的种子:

dbcc checkident (mytable, reseed, 30)

你能解释一下为什么你关心你的身份栏中是否有空白吗?如果您只是希望标签旁边有一些漂亮的ID号(并且不担心其他表中的相关数据,或者即使删除了ID 1,第二行是否仍保留ID 2),那么您始终可以在运行时派生这些无意义的ID号,例如

SELECT col, MeaninglessID = ROW_NUMBER() OVER (ORDER BY col)
FROM dbo.table
ORDER BY col;

没有SQL Server版本2010。。。。你在用什么??还有:为什么要费心重新循环那些使用过的标识值??你从中得到了什么??看起来很多工作毫无益处,真的……重用标识值是一个非常糟糕的主意。您永远不能依赖标识来跳过值(例如,即使回滚查询,也会使用它们),因此根本没有理由尝试重用它们。如果您有没有定义PK/FK结构的相关表(您不应该,但确实如此),将新数据放在这些旧数字上会将错误的记录关联到它们,因为这些旧记录没有与父记录一起删除。但是,如果您的示例中存在高于例如30的值,则可能会导致重复!操作时要非常小心!!将标识重新设定为给定值不会跳过高于重新设定值的现有值-这是一个常见的误解!是的,为什么?因为标识属性本身并不强制唯一性。我在这里写了一些关于身份栏的类似误解:我认为说
SQLServer2010
是错误的。这是一个满足其需求的解决方案,适用于SQL SERVER 2000及更高版本。我会把别人拿走的+1还给你,因为你回答了关于如何重用标识值的问题。然而,上述关于这样做的危险性(和无意义性)的观点不应被忽视。@AaronBertrand-谢谢并对待!
SELECT col, MeaninglessID = ROW_NUMBER() OVER (ORDER BY col)
FROM dbo.table
ORDER BY col;