首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server IDENTITY 欄位重設種子值的正確方法:DBCC CHECKIDENT 實戰

     編輯:關於SqlServer

錯誤示範:IDENTITY 函數不支援變數參數


DECLARE @a int = 190;
SELECT IDENTITY(int, @a, 1) AS id, * INTO #temp FROM tablename;  -- 錯誤!

正確兩步驟法


-- 1. 先建結構 (不複製資料)
SELECT IDENTITY(int, 1, 1) AS id, * INTO #temp1 FROM tablename WHERE 1=2;

-- 2. 重設種子
DBCC CHECKIDENT('#temp1', RESEED, @a);  -- @a = 190

-- 3. 再灌資料
INSERT INTO #temp1 SELECT * FROM tablename;
SELECT * FROM #temp1;

常用場景:重設現有表種子歸零


-- 清空表後,讓下一筆從 1 開始
TRUNCATE TABLE mytable;  -- 自動重設種子 (最快)
-- 或
DELETE FROM mytable;
DBCC CHECKIDENT('mytable', RESEED, 0);  -- 下一筆 = 1
  • TRUNCATE TABLE 會自動重設 IDENTITY 種子,**最快且記錄最少**
  • DELETE 不重設種子,需手動 DBCC CHECKIDENT
  • RESEED, 0 表示下一個值 = 1 (種子值 + 增量)

進階:檢視目前種子值


DBCC CHECKIDENT('mytable', NORESEED);  -- 只報告,不修改
-- 回傳:Current identity value: 190, Current column value: 190

關鍵點:**IDENTITY 函數種子參數必須為常數**;運用 WHERE 1=2 只複製結構 + DBCC CHECKIDENT RESEED + INSERT SELECT 是標準作法。生產環境重設種子需謹慎,確保無外鍵參考衝突。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved