簡體   English   中英

如何在SQL Server中為自動增量列指定特定值?

[英]How to specify a specific value for an auto increment column in SQL Server?

我在sql server中有一個自動增量標識列,但我想為其中一行指定一個特定的值。 所以號碼方案如下:

1 ...,
2....,
999 - for the reserved entry,
3....,
n....

我怎樣才能做到這一點?

您需要使用IDENTITY_INSERT

SET IDENTITY_INSERT MyTableName ON

INSERT INTO MyTableName
(IdField, <list of all the fields>)
VALUES
(999, <list of other values)

SET IDENTITY_INSERT MyTableName OFF

DBCC CHECKIDENT(MyTableName, RESEED, 2)

您還必須在INSERT語句中使用顯式字段列表,並且每個會話僅限於一個活動IDENTITY_INSERT

如果種子值高於當前ID值,這也會將種子值重置為您插入的內容。

您也可以使用DBCC CHECKIDENT來解決這個DBCC CHECKIDENT但要管理它將是一件非常痛苦的事情。

您可以使用IDENTITY_INSERT

SET IDENTITY_INSERT [tablename] ON;
INSERT INTO [tablename] (identitycolumn, ... ) VALUES (999, ...);
SET IDENTITY_INSERT [tablename] OFF;

不得不求助於此始終是代碼味道。 作為表填充或復制數據的數據加載實踐,它是可接受的。 對於“保留”ID的應用程序是一種不好的做法,並指出數據模型設計缺陷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM