IDENTITY_INSERT - 设置值会重置下一个身份吗?

Jer*_*old 2 sql database sql-server

我对SQL Server不太熟悉,但我正在开发一个脚本,该脚本在IDENTITY ON的表上显式设置值.由于一些计划不周的模式 - 看起来我将不得不明确地插入一些任意高的数字(例如10,000).

在未来的INSERTs(不是INDENTIY_INSERTS),它会被插入到10,001吗?还是最低的"免费"插槽?

例如 - 表目前有1-50行,我做的IDENTITY_INSERT是这样的

SET IDENTITY_INSERT [dbo].[ConditionPathways] ON
INSERT INTO [dbo].[ConditionPathways] ([ConditionPathwayID], [ConditionSegmentID], [WorkflowDefinitionID]) 
VALUES (10000, 10000, 10000)
SET IDENTITY_INSERT [dbo].[ConditionPathways] OFF
Run Code Online (Sandbox Code Playgroud)

将下一个"正常"插入,将其置于10001或51?我真的希望它51.

adr*_*nks 12

你以后打开IDENTITY_INSERT关闭,下一个可用的身份将是10001.

您可以使用DBCC CHECKIDENT重新设置标识字段,并RESEED选择将下一个标识设置回51.这样做的问题是,当表填充到最后一个插入项的标识为9999时,下一个项将导致重复的标识或错误,具体取决于您是否对标识列具有唯一约束.