回答
SET IDENTITY_INSERT [YourTableName] ON
--do your update/insert query here
SET IDENTITY_INSERT [YourTableName] OFF
我认为说'SQL SERVER 2010'是一个错误。这是他的要求的解决方案,它适用于SQL SERVER 2000及更高版本。 [SET IDENTITY_INSERT - MSDN](http://msdn.microsoft.com/zh-cn/library/aa259221(v=sql.80).aspx) – Kaf 2012-03-12 18:00:50
我会给你回复某人从你身上拿走的+1 ,因为你确实回答了如何重用身份值的问题。然而,上面提到的关于这样做(和毫无意义)的危险的观点不应该被忽视。 – 2012-03-12 18:22:07
@AaronBertrand - 感谢和对待! – Kaf 2012-03-12 18:34:26
您需要补种的身份:
dbcc checkident (mytable, reseed, 30)
但是** **可能会导致重复,如果值高于例如在你的示例中有30个存在! **这个操作非常小心**!将一个IDENTITY重新转换为一个给定的值,不会**跳过比已重置值高的现有值 - 这是一种常见的误解! – 2012-03-12 17:35:28
这是对的,为什么?因为IDENTITY属性本身并不强制执行唯一性。我在这里发表了一些关于IDENTITY列的类似误解:http://sqlblog.com/blogs/aaron_bertrand/archive/2012/02/27/bad-habits-to-kick-believing-everything-you-hear-or-read .aspx – 2012-03-12 17:56:37
你能解释为什么你关心是否有差距的身份专栏?如果您只想在标签旁边添加一些漂亮的ID号码(并且不担心其他表格中的相关数据,或者即使删除了ID 1,第二行是否保留ID 2),您始终可以导出这些无意义的ID号码在运行时,例如
SELECT col, MeaninglessID = ROW_NUMBER() OVER (ORDER BY col)
FROM dbo.table
ORDER BY col;
我刚刚意识到这是我的第1,000个答案。 – 2012-03-12 18:44:44
WOOOHOOOO !!! ;-)恭喜 - 期待数以千计:-) – 2012-03-12 20:02:57
谢谢马克,我有很多方法可以抓住你。 :-) – 2012-03-12 20:10:17
- 1. 如何从表中删除标识列
- 2. 删除TFS 2010中的孤立标识
- 3. 删除标识值
- 4. 将行标识为排除了某些列中的更改
- 5. 如何通过标识删除SQL Server中的一行?
- 6. 浏览页面标识除了某些标识 - laravel
- 7. C#在gridview中标识行以删除
- 8. 在删除行后重用标识值
- 9. SQL:删除,除了
- 10. 增加SQL Server中标识列的值而不删除并重新创建表
- 11. 删除阵列中的第一级标识符
- 12. strtok删除我的字符串,除了第一个标记
- 13. 删除另一个SQL Server 2008的标准中的一列
- 14. 在vb 2010删除列标题快递
- 15. Plone:processForm()删除了我的Archetype字段
- 16. 从表中的列中移除标识
- 17. SQL Server不会让我做列标识
- 18. 如何删除插入表中标识列的重复值?
- 19. 删除了一些列的熊猫数据帧在一行
- 20. SQL Server和标识列中的空白
- 21. SQL Server中的列标识符
- 22. SQL Server将列转换为标识列
- 23. 如何让git认识到我删除了一个文件?
- 24. 如何删除除了一些使用Nokogiri以外的所有标签
- 25. 从SQL Server数据库中的所有表数据删除,除了一些表
- 26. 使用SSIS的标识列
- 27. 从数据库表的所有标识列中删除[不适用于复制]
- 28. Xcode 8.3 - 本地删除包标识符?
- 29. dir - 列出除了一些
- 30. 节点标识,同时删除
没有SQL Server版本** 2010 ** ....你在用什么?另外:**为什么**麻烦重新循环那些使用的身份值?你从中得到什么?看起来好像很多工作没有好处,真的...... – 2012-03-12 17:34:35
重用身份值是一个非常糟糕的主意。 YOu永远不能依赖身份不要跳过值(即使你回滚查询也会使用它们),所以没有任何理由试图重用它们。如果您的相关表格没有定义的PK/FK结构(您不应该这样做),将新数据与旧数字相对应会将错误记录与它们联系起来,因为这些旧记录不会与父记录一起删除。 – HLGEM 2012-03-12 17:48:11