回答
當您從表格中刪除一列或將標識更改爲較高數字時,會發生這種情況。
可以重置身份,但除非您有充分的理由這樣做(理由很可能是刪除了大部分表內容),否則我不會推薦這麼做。
如何補種身份的一些細節,可以發現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