2012-04-10 68 views
-2

我正在使用SqlServer 2005,我有一個表,其中我有一個自動遞增列,但由於某些原因,自動遞增字段不以1開頭,但有一些隨機數,如21,91。爲什麼會發生?SQL Server中的自動增量列並不總是從1開始?

+1

顯示你的表格定義,不要把所有東西都大寫。 – 2012-04-10 07:53:44

+0

你爲什麼喊?您可能[請查看關於dbcc checkident的文檔](http://msdn.microsoft.com/zh-cn/library/ms176057%28v=sql.105%29.aspx) – 2012-04-10 07:55:10

回答

1

你要麼需要設置Seed的列....或者您是否已進入行,您需要在表上執行一個TRUNCATE TABLE命令

TRUNCATE TABLE XYZ 
1

MSSQL未使用max(id)+ 1作爲其他數據庫的身份。它存儲最後使用的ID並遞增它。

可以補種的身份:

DBCC CHECKIDENT ('tablex', RESEED, 1) 

或截斷表,這也刪除所有數據:

TRUNCATE TABLE tablex 

當然你也可以聯合身份補種用的最後一個值:

DBCC CHECKIDENT ('tablex', RESEED, (SELECT max(id) + 1 FROM tablex)) 

但是,請注意由於衝突導致重新生成id時產生錯誤,aut o增量ID是唯一的!