Sql-Server

分配新的自動增量值

  • January 9, 2015

我有一個如下創建的表。

CREATE TABLE [dbo].[Table1](
   [ID] [INT] IDENTITY(1,1) NOT NULL,
   [Title] [VARCHAR](255) NULL,
   ...

假設最新的 ID 是 100(我有 100 條記錄)

有沒有辦法ALTER將此表的IDENTITY列更改為現在的自動增量值為 500?

所以最後我會有這樣的 ID 98, 99, 100, 500, 501, ….

我似乎無法在 T-SQL 中找到解決方案

您可以使用DBCC CHECKIDENT重新播種IDENTITY列。

這是您可以執行的範例:

SET NOCOUNT ON;
USE tempdb;
GO

CREATE TABLE dbo.foo(ID INT IDENTITY(1,1));
GO

INSERT dbo.foo DEFAULT VALUES;
GO 100

-- note: set it to ([the next value you want] - 1)
DBCC CHECKIDENT(N'dbo.foo', RESEED, 499);
GO

INSERT dbo.foo DEFAULT VALUES;
GO 3

SELECT ID FROM dbo.foo WHERE ID >= 98;

結果:

98
99
100
500
501
502

你可以使用下面的MSDN_DBCC CHECKIDENT希望對你有幫助!

DBCC CHECKIDENT (Transact-SQL)

您可以使用 DBCC CHECKIDENT 為標識列手動設置新的目前標識值。

DBCC CHECKIDENT 
( 
   table_name
       [, { NORESEED | { RESEED [, new_reseed_value ] } } ]
)
[ WITH NO_INFOMSGS ]

例子

USE AdventureWorks2012;
GO
DBCC CHECKIDENT ('Person.AddressType', RESEED, 10);
GO

引用自:https://dba.stackexchange.com/questions/88947