如何使用OUTPUT子句使用多个表?

时间:2016-12-28 14:13:33

标签: sql sql-server

是否可以在INSERT语句的OUTPUT子句中插入不同表的列,例如:

DECLARE @insertedrecords TABLE (Id int, [Guid] uniqueidentifier);

INSERT INTO mytable 
    (column names here...)
OUTPUT inserted.id_no, b.[Guid] INTO @insertedrecords 
SELECT 
    column names here...
FROM @myTVP b

目前,使用上述内容我收到以下错误:

  

多部分标识符" b.Guid"无法受约束。

1 个答案:

答案 0 :(得分:0)

Inserted特殊表将保存那些插入目标表的记录,而不是 Source 表中的所有数据。如果目标表中的列不属于Insert列表,那么在OUTPUT子句中,它将为NULL

所以你需要两个不同的Inserts

DECLARE @insertedrecords TABLE (Id int, [Guid] uniqueidentifier);

INSERT INTO mytable 
    (column names here...)
SELECT 
    column names here...
FROM @myTVP b

Insert into @insertedrecords(Id,Guid)
select id_no, [Guid] 
From @myTVP