問題背景:
在使用數據庫時,經常要使用主鍵,並設置其為自增字段,我使用的初衷是想要數據庫自動給我分配一個空閑的ID給我使用,但是使用后發現,如果我們刪除數據后,后面添加的數據的自增ID始終是在之前的基礎上開始的,我想要的自增字段始終從1開始。
在多次插入數據后,自增的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開始
如果想要每次的數據都是從1開始使用的,每次添加數據的時候都是用 DBCC CHECKIDENT (''dbo.Person'', RESEED, 0)。
數據不連貫的原因是刪除數據導致的。