SQL Server 自增欄位歸零等問題

encienqi發表於2011-02-09

今天在學習SQL Server 2005時遇到了這麼一個問題:練習建立了一個表Person,有5個欄位,設定ID為主鍵,同時設為自增,如圖

 

在多次插入資料後,自增的ID號比較混亂,而且刪除資料後,自增的ID並不會歸零,經過多方查閱,瞭解到有兩種方法可以控制自增的欄位:

方法一:    如果曾經的資料都不需要的話,可以直接清空所有資料,並將自增欄位恢復從1開始計數

    truncate table 表名

方法二:   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 ('dbo.Person', RESEED, 10) 後再通過Management Studio新增資料時,ID就會自動從11開始,也就是new_reseed_value+1開始

相關文章