程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> IDENTITY列的一個有用操作

IDENTITY列的一個有用操作

編輯:關於SqlServer
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 ('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)
GO

B. 報告當前標識值
下例報告 jobs 表中的當前標識值;如果該標識值不正確,並不對其進行更正。

USE pubs
GO
DBCC CHECKIDENT (jobs, NORESEED)
GO

C. 強制當前標識值為 30
下例強制 jobs 表中的當前標識值為 30。

USE pubs
GO
DBCC CHECKIDENT (jobs, RESEED,
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved