回答
当您从表格中删除一列或将标识更改为较高数字时,会发生这种情况。
可以重置身份,但除非您有充分的理由这样做(理由很可能是删除了大部分表内容),否则我不会推荐这么做。
如何补种身份的一些细节,可以发现here:
,并使用它的方式是
DBCC CHECKIDENT (table_name, RESEED, new_reseed_value)
其中new_reseed_value将57这个特定的情况下(即身份将启动从57)。但是,请注意,如果ID高于57的表中有某些内容会失败。
备选地,可以使用:
SET IDENTITY_INSERT Table_Name ON
INSERT INTO Table_Name(ID, Other_Columns,You_Are_Inserting,You_Must_Specify_All_Of_Them)
VALUES (57, 'SomeData','OtherData',...)
SET IDENTITY_INSERT Table_Name OFF
这将允许通过特别指定标识列值,而无需再接种插入。此外,请勿插入比您当前身份更高的值,否则您将在插入时遇到问题。
仅供参考,仅重新启动2012实例就可能产生差距,最多可达1000个宽度,这称为“性能优化”,另一个原因是从未暴露数据库之外的身份。还有一件事:如果表中的身份大于重新设定的值,则RESEED不会失败。只要对列没有PK/UQ约束(通常是,OK ..),身份对于重复也很满意,请自己尝试。 – dean
这是IDENTITY
列的预期行为。如果你想要连续的数字,你不应该使用它们,因为每次你插入一个新行时,身份值会增加,但是如果你删除最后一行,不会减少,如果你开始一个事务,它也不会减少,插入一个新行,然后回滚事务。
您可以使用DBCC CHECKIDENT
命令来更改标识值,但实际上,您应该将列更改为常规非标识列并管理自己代码中的值。
对于特定的表格,您需要打开Identity_insert。
SET IDENTITY_INSERT YourTableName ON
Insert into YourTableName (IDField,rest of the column names)
values (57, rest of the column values)
SET IDENTITY_INSERT YourTableNAme OFF
- 1. 将值添加到DGV列时跳过某些单元格
- 2. SQL Server 2008 - 标识列跳过行ID
- 3. “跳过”ArrayFormulas上的一些行/列?
- 4. 跳过fread的一些行
- 5. awk - 跳过标题,添加列
- 6. 跳过列范围的第一个值并添加到列表
- 7. awk添加行#跳过标题
- 8. 如何跳过标识列的编号?
- 9. DataGridview跳过第一行的列值
- 10. SQL Server:在行更新时重新生成标识列的值
- 11. C#foreach通过跳过一些值
- 12. 跳过SqlBulkCopy中的一些列
- 13. 如何根据两个唯一标识符添加行的值
- 14. 如何添加运行标识新列星火数据帧(pyspark)
- 15. 标识列增量跳转
- 16. 批量从文本文件插入到SQL Server中添加一个唯一标识符或跳过一列
- 17. 添加新的一列从所有行的值列表满足标准
- 18. PHP的日期时间跳过添加
- 19. 在跳过数值的同时跳过python中的列表
- 20. 的Javascript:添加新行的表,跳过th元素
- 21. 做一个选择时跳过一些列
- 22. 一些浏览器无法识别通过Javascript添加的元标记
- 23. 根据布尔值跳过一些标记
- 24. 添加列参考标识列
- 25. 查找Max在numpy的跳过一些行和列
- 26. 倒计时器跳过一些毫秒
- 27. sql - 添加时间间隔跳过一定的时间段
- 28. 自动循环跳过一些指标阵列
- 29. 用一些默认值在Kendo Grid中添加新行
- 30. 更新标识列中的值
需要补种id列... http://blog.sqlauthority.com/2007/03/15/sql-server-dbcc-reseed-table-identity-value-reset-table-身份/ – Milen