2016-05-05 36 views
2

我創建了一個表並向其中插入了4行。我跑到下面的查詢在sql server 2012的表格中查找上一次應用的種子值

SELECT seed_value as SeedValue, last_value as identityValue 
FROM sys.identity_columns 
WHERE object_id=OBJECT_ID('ALJtest1') 

,並得到了結果作爲

SeedValue| identityValue 
------------------------- 
1  | 4 

然後我補種使用

DBCC CHECKIDENT('DBO.ALJtest1', RESEED, 10) 

表時,我跑了下面查詢這個時候

SELECT seed_value as SeedValue, last_value as identityValue 
FROM sys.identity_columns 
WHERE object_id=OBJECT_ID('ALJtest1') 

我得到結果爲

SeedValue| identityValue 
------------------------- 
1  | 10 

有沒有辦法在SQL Server 2012的表中找到最後應用的種子值?

回答

4

RESEED儘管名稱不改變標識的種子值,但它只是設置要生成的下一個標識值。在創建後無法更改標識列的實際種子值。從the documentation

的種子值是插入到用於裝入表中 非常第一行標識列的值。所有後續行都包含當前標識值加上遞增值,其中當前標識值是爲表或視圖生成的最後一個標識值。

不能使用DBCC CHECKIDENT執行以下任務:

  • 更改在標識列指定創建表或視圖時,原來的種子值。
  • 重新整理表或視圖中的現有行。

要改變原來的種子值和補種的任何現有行,你 必須刪除標識列並重新創建它指定新的種子 值。當表中包含數據時,將使用指定的種子值和增量值將標識號添加到 現有的行中。無法保證行更新的順序,即 。

因此,要回答你的問題:沒有,沒有辦法知道在DBCC CHECKIDENT(..., RESEED)最後一個指定的值,因爲當前標識值可以插入後已經改變。

相關問題