SQL Server]關于辨別列從1開始計數的問題 在SQL Server中, 我們有時需要在清空資料表之後,重新添加記錄時,辨別列重新從1開始計數。
我們隻需要在插入記錄之前,執行下面的指令:
DBCC CHECKIDENT ('表名', RESEED, 0)
------------------------------------------------------------------------------------------------------------------------
問題:在資料庫中設定了一個字段id,随着記錄的條數進行遞增,
但現在有一個問題,目前面的記錄(甚至所有的記錄)删除後,
如何讓id重新來遞增...(從1開始進行遞增..)
------------------------------------------------------------ ---
有一個辦法:
當你的表中沒有任何記錄的話,那麼,你可以把這個表删除掉,然後再重建立立這個表,當然,結構是一樣的,這樣的話, 你的ID就會重新進行遞增 了!
不過我想,這個ID的值應該是記錄在某一個系統表中的,如果要是能查詢到這個表中的相關記錄,修改這個記錄,改變它 的ID的值,這樣做是最好的了!
------------------------------------------------------------ ---
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)
GO
B. 報告目前辨別值
下例報告 jobs 表中的目前辨別值;如果該辨別值不正确,并不對其進行更正。
USE pubs
GO
DBCC CHECKIDENT (jobs, NORESEED)
GO
C. 強制目前辨別值為 30
下例強制 jobs 表中的目前辨別值為 30。
USE pubs
GO
DBCC CHECKIDENT (jobs, RESEED, 30)
GO