Sqlserver 設定 自增 主鍵ID identity
使用DBCC CHECKIDENT可以重新設定在使用中的表的標識列的起始值;
DBCC CHECKIDENT
檢查指定表的當前標識值,如有必要,還對標識值進行更正。
語法DBCC CHECKIDENT
( 'table_name'
[ , { NORESEED
| { RESEED [ , new_reseed_value ] }
}
]
)
'table_name'
是要對其當前標識值進行檢查的表名。表名必須符合識別符號規則。有關更多資訊,請參見使用識別符號。指定的表必須包含標識列。
NORESEED
指定不應更正當前標識值。
RESEED
指定應該更正當前標識值。
new_reseed_value
是在標識列中重新賦值時要使用的值。
註釋如有必要,DBCC CHECKIDENT 會更正列的當前標識值。然而,如果標識列是使用 NOT FOR REPLICATION 子句(在 CREATE TABLE 或 ALTER TABLE 語句中)建立的,則不更正當前標識值。
如果標識列上有主鍵或唯一鍵約束,無效標識資訊可能會導致錯誤資訊 2627。
對當前標識值所做的具體更正取決於引數規範。
DBCC CHECKIDENT 語句 | 所做的標識更正 |
---|---|
DBCC CHECKIDENT ('table_name', NORESEED) | 不重置當前標識值。DBCC CHECKIDENT 返回一個報表,它指明當前標識值和應有的標識值。 |
DBCC CHECKIDENT ('table_name') 或 DBCC CHECKIDENT ('table_name', RESEED) | 如果表的當前標識值小於列中儲存的最大標識值,則使用標識列中的最大值對其進行重置。 |
DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value) | 當前值設定為 new_reseed_value。如果自建立表後沒有將行插入該表,則在執行 DBCC CHECKIDENT 後插入的第一行將使用 new_reseed_value 作為標識。否則,下一個插入的行將使用 new_reseed_value + 1。如果 new_reseed_value 的值小於標識列中的最大值,以後引用該表時將產生 2627 號錯誤資訊。 |
當前標識值可以大於表中的最大值。在此情況下,DBCC CHECKIDENT 並不自動重置當前標識值。若要在當前標識值大於列中的最大值時對當前標識值進行重置,請使用兩種方法中的任意一種:
- 執行 DBCC CHECKIDENT ('table_name', NORESEED) 以確定列中的當前最大值,然後使用 DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value) 語句將該值指定為 new_reseed_value。
- 將 new_reseed_value 置為很小值來執行 DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value),然後執行 DBCC CHECKIDENT ('table_name', RESEED)。
不管是否指定任何選項(針對於包含標識列的表;下例使用 pubs 資料庫的 jobs 表),DBCC CHECKIDENT 返回以下結果集(值可能會有變化):
Checking identity information: current identity value '14', current column value '14'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.許可權
DBCC CHECKIDENT 許可權預設授予表所有者、sysadmin 固定伺服器角色和 db_owner 固定資料庫角色的成員且不可轉讓。
示例A. 如有必要,重置當前標識值下例在必要的情況下重置 jobs 表的當前標識值。
USE pubs GO DBCC CHECKIDENT (jobs) GOB. 報告當前標識值
下例報告 jobs 表中的當前標識值;如果該標識值不正確,並不對其進行更正。
USE pubs GO DBCC CHECKIDENT (jobs, NORESEED) GOC. 強制當前標識值為 30
下例強制 jobs 表中的當前標識值為 30。
USE pubs GO DBCC CHECKIDENT (jobs, RESEED, 30) GO
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25897606/viewspace-756956/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SqlServer主鍵和自增長設定SQLServer
- select @@Identity 返回自增主鍵的值IDE
- SQLite設定主鍵自動增長及插入語法SQLite
- Java書籤 #MyBatis之批量插入並返回自增主鍵idJavaMyBatis
- postgresql自增主鍵SQL
- Mysql關於自增主鍵,自增主鍵優化總結MySql優化
- MySQL 主鍵自增也有坑?MySql
- MySQL 中的自增主鍵MySql
- 資料表設計之主鍵自增、UUID或聯合主鍵UI
- MySQL 主鍵自增 Auto Increment用法MySqlREM
- postgresql重置序列和自增主鍵SQL
- MySQL新增自增主鍵的坑MySql
- Mybatis-Plus3.0預設主鍵策略導致自動生成19位長度主鍵id的坑MyBatisS3
- 檢視SQLSERVER主鍵列SQLServer
- 【mybatis-plus】主鍵id生成、欄位自動填充MyBatis
- MogDB/openGauss如何實現自增主鍵
- Laravel 中使用 Redis 生成自增主鍵LaravelRedis
- PostgreSQL 建立主鍵自增表的 DDLSQL
- Mybatis:插入資料返回自增主鍵MyBatis
- MySQL8自增主鍵變化MySql
- MySQL自增主鍵跳號問題MySql
- SQLServer IDENTITY_INSERT問題SQLServerIDE
- PostgreSQL如何設定主鍵序列?SQL
- 向Mysql主鍵自增長表中新增資料並返回主鍵MySql
- PostgreSQL建立自增主鍵的兩種方法SQL
- 深入瞭解MySQL中的自增主鍵MySql
- mybatis入門程式:向資料庫中新增使用者&&自增主鍵和非自增主鍵的返回MyBatis資料庫
- 自增ID的實現
- 面試官竟然問我訂單ID是怎麼生成的?難道不是MySQL自增主鍵?面試MySql
- 資料庫主鍵 ID 生成策略資料庫
- Laravel 可以修改預設的自增ID開始值了Laravel
- MySQL 8 新特性之自增主鍵的持久化MySql持久化
- SQLServer學習筆記 - 主鍵的理解SQLServer筆記
- MySQL設定表自增步長MySql
- EBS:主鍵ID欄位預設值來源於序號
- 自增長主鍵回顯實現,批次資料插入
- MySQL 資料庫自增主鍵生成的優缺點MySql資料庫
- 使用Spring JDBC新增記錄如何返回自增主鍵值SpringJDBC
- SQLSERVER 的主鍵索引真的是物理有序嗎?SQLServer索引