使用INSERT-OUTPUT为另一个INSERT提供值

时间:2012-04-19 15:44:26

标签: sql tsql insert

美好的一天,

我想知道是否可以使用INSERT-OUTPUT语句,以便为另一个外部INSERT语句提供值。这样,值可以在单个语句中添加到实体表和交集表中 - 我希望我能有效地写出这一点。例如:

INSERT INTO [#tblIntersect] ([Entity1ID], [Entity2ID])
VALUES
(
    INSERT INTO [#tblEntity1] ([Value])
    OUTPUT [inserted].[ID] AS [entity1ID], @entity2ID AS [entity2ID]
    VALUES ('One')
)

因此内部INSERT-OUTPUT语句将向表#tblEntity1添加一个新实体。然后,新实体的ID(设置为IDENTITY(1, 1)将通过OUTPUT语句返回,同时返回一个静态值(我的代码中已有),以提供两个实体外INSERT语句的值。

我认为可能的原因是因为内部INSERT-OUTPUT语句的执行本身会返回一个表,而这样的输出通常可用于为INSERT语句提供值。 / p>

显然这个例子不起作用;我希望这只是一个简单的语法问题。

提前感谢您的任何意见和建议。

1 个答案:

答案 0 :(得分:1)

您的要求可以根据documentation

假设#tblIntersect有两个匹配的id列,这应该可以工作

INSERT INTO [#tblEntity1] ([Value])
OUTPUT [inserted].[ID] AS [entity1ID], @entity2ID AS [entity2ID]
   INTO #tblIntersect
VALUES ('One')
相关问题