在启用标识时插入值

时间:2014-05-08 13:08:17

标签: sql visual-studio-2012

我有一个带有identity(1,1)字段的表,我想使用insert into将值插入其中。 如何将值插入到indentity字段中? 谢谢!

3 个答案:

答案 0 :(得分:0)

SET IDENTITY_INSERT tbl ON
-- insert (include the ID column)
SET IDENTITY_INSERT tbl OFF

答案 1 :(得分:0)

你必须这样做:

SET IDENTITY_INSERT TableNameHere ON

然后你可以在其中插入值:

SET IDENTITY_INSERT IdentityTable ON 

INSERT IdentityTable(TheIdentity, TheValue) 
VALUES (3, 'First Row') 

SET IDENTITY_INSERT IdentityTable OFF

答案 2 :(得分:0)

如果您的问题实际上是如何让系统在标识列中提供适当的值,那么答案就是您在插入查询中没有提到它:

INSERT INTO Table (ColumnA_That_Isnt_Identity,ColumnB_That_Isnt_Identity)
VALUES (9,'abc')

然后IDENTITY列会自动分配一个值。


如果您想知道为此列分配的值,您可以将SCOPE_IDENTITY作为单独的SELECT查询,也可以包含OUTPUT clause,如下所示:

INSERT INTO Table (ColumnA_That_Isnt_Identity,ColumnB_That_Isnt_Identity)
OUTPUT inserted.ID_Column_That_Is_The_Identity
VALUES (9,'abc')

IDENTITY_INSERTON时,您告诉系统“相信我,我会提供适当的值”。当它是OFF时,您告诉系统提供值。这是你的两个选择。

没有办法将IDENTITY_INSERT设置为ON,并且在设置时,请求系统提供值。鉴于IDENTITY_INSERT只有一个目的,允许提供值,这绝不是问题。