identity用法 - sql create table primary key auto increment



SQL Server標識列值從0開始,而不是1 (4)

來自DBCC CHECKIDENT

DBCC CHECKIDENT ( table_name, RESEED, new_reseed_value )

如果自創建表以來沒有向表插入任何行,或者已使用TRUNCATE TABLE語句刪除了所有行,則在運行DBCC CHECKIDENT後插入的第一行使用new_reseed_value作為標識。 否則,插入的下一行使用new_reseed_value +當前增量值。

因此,對於空表或截斷表,這是預期的。

https://src-bin.com

我有一個奇怪的情況,我的數據庫中的一些表從0開始其ID,即使TABLE CREATE有IDENTITY(1,1)。 對於某些表格來說是這樣,但對其他表格則不然。 它一直工作到今天。

我試過重置標識列:

DBCC CHECKIDENT (SyncSession, reseed, 0);

但是新記錄從0開始。我已經嘗試對所有表執行此操作,但有些仍然從0開始,有些從1開始。

有什麼指針嗎?

(我正在使用帶有高級服務的SQL Server Express 2005)


Answer #1

嘗試這個

DECLARE @c TABLE (TanvtechId varchar(10),NewTanvtechId Varchar(10))
INSERT INTO @c
SELECT TanvtechId , Row_Number() OVER (ORDER BY TanvtechId ) from Tanvtech 

UPDATE G
SET G.TanvtechId =a.NewTanvtechId 
FROM Tanvtech as G INNER JOIN @c as a ON a.TanvtechId =G.TanvtechId 

Answer #2

我有同樣的問題,修改數據庫後從備份恢復。 我只是添加一個虛擬記錄,然後將其刪除...然後將RESEED設置為0.似乎工作。


Answer #3

這是合乎邏輯的,因為您已將身份值更改(重新設定)為零?

DBCC CHECKIDENT (SyncSession, reseed, 1)

將重新設置您的標識列,並確保第一個新記錄以1開頭。





auto-increment