DBCC CheckIdent 重置參數
RESEED 參數
使用 DBCC CheckIdent 會出現下述訊息
查詢 insert 10 筆資料,從 ExecuteTime 可以得知,DBCC CheckIdent 重置後的 ID 序號有從 0 開始跑
官方範例 - Reset the identity value on an empty table
Specifies that the current identity value should be changed.new_reseed_value 參數
The new value to use as the current value of the identity column.模擬問題的 TSQL 範例
DROP TABLE IF EXISTS tblIdentity
CREATE TABLE [dbo].[tblIdentity](
[ID] [int] IDENTITY(100,1) NOT NULL, -- 不是從 1 開始跑
[ExecuteTime] [datetime] NULL,
CONSTRAINT [PK_tblIdentity] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
-- insert 5 筆資料
INSERT INTO tblIdentity (ExecuteTime) VALUES(GETDATE())
GO 5
-- 重置:從 0 開始跑
DBCC CheckIdent('tblIdentity', RESEED, 0)
-- 再 insert 5 筆資料就好
INSERT INTO tblIdentity (ExecuteTime) VALUES(GETDATE())
GO 5
-- 查詢目前資料
SELECT * FROM tblIdentity
查詢 insert 10 筆資料,從 ExecuteTime 可以得知,DBCC CheckIdent 重置後的 ID 序號有從 0 開始跑
官方範例 - Reset the identity value on an empty table
在 [SQL] DELETE 和 TRUNCATE 內有紀錄使用 truncate 會重置 identity,Delete 本身沒有重置 identity 功能,但在官方範例 - Reset the identity value on an empty table 則是提出使用 Delete 刪除 Table 內全部資料後,可以透過 DBCC CheckIdent 來讓 identity 重置的做法,TSQL 示意
DELETE FROM TableName
GO
DBCC CHECKIDENT ('TableName', RESEED, 0);
GO
沒有留言:
張貼留言