[SQL Server]如何重設一個資料表下一筆資料的識別欄的值

常常,我們清空了資料表,但是新增資料列後,其識別欄的值卻沒有從1開始。在此時,我們可以執行:
 
DBCC CHECKIDENT ( ‘資料表名稱‘, RESEED, )
 
要注意第3個參數在Table內有無資料時的行為是不同的。
 
假設我們設成T,如果此時資料表沒有資料,則下一筆新增資料的識別欄值為T;如果執行DBCC之時有資料,則下一筆新增資料的識別欄值為T+1。(之前寫反了 ^^")
 
來一點實驗性的用法:
 
DECLARE @MaxID INTEGER
SET @MaxID = (SELECT NO FROM Test)
IF @MaxID IS NULL
    SET @MaxID = 0
ELSE
    SET @MaxID = @MaxID + 1
DBCC CHECKIDENT ( ‘Test’, RESEED, @MaxID)
 
這段程式碼可以將指定資料表的下一個ID設為最大值+1。Ex: 如果目前資料中最新的一筆其編號為13,然後你新增了2筆資料後再移除,則下一筆新增的其編號就會是16;但如果你在新增該資料前先執行以上程式碼,則下一筆新增的其編號就會是14。這也許可以用在Rollback後的處理。
廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

w

連結到 %s