Какие столбцы можно использовать в предложении OUTPUT INTO?

Я пытаюсь создать таблицу сопоставления, чтобы связать идентификаторы новых строк в таблице с теми, из которых они скопированы. Предложение OUTPUT INTO кажется идеальным для этого, но, похоже, оно не работает в соответствии с документацией.

Мой код:

DECLARE @Missing TABLE (SrcContentID INT PRIMARY KEY )
INSERT INTO @Missing 
    ( SrcContentID ) 
SELECT cshadow.ContentID
    FROM Private.Content AS cshadow
    LEFT JOIN Private.Content AS cglobal ON cshadow.Tag = cglobal.Tag
    WHERE cglobal.ContentID IS NULL 

PRINT 'Adding new content headers'
DECLARE @Inserted TABLE (SrcContentID INT PRIMARY KEY, TgtContentID INT )
INSERT INTO Private.Content 
    ( Tag, Description, ContentDate, DateActivate, DateDeactivate, SortOrder, CreatedOn, IsDeleted, ContentClassCode, ContentGroupID, OrgUnitID ) 
    OUTPUT cglobal.ContentID, INSERTED.ContentID INTO @Inserted (SrcContentID, TgtContentID)
SELECT Tag, Description, ContentDate, DateActivate, DateDeactivate, SortOrder, CreatedOn, IsDeleted, ContentClassCode, ContentGroupID, NULL 
    FROM Private.Content AS cglobal
    INNER JOIN @Missing AS m ON cglobal.ContentID = m.SrcContentID

Результаты в сообщении об ошибке:

Msg 207, Level 16, State 1, Line 34
Invalid column name 'SrcContentID'.

(строка 34 с выходом INTO)

Эксперименты показывают, что только те строки, которые действительно присутствуют в целевом объекте INSERT, могут быть выбраны в OUTPUT INTO. Но это противоречит документам в онлайн-книгах. Статья оВыходной пункт есть пример E, который описывает подобное использование:

Предложение OUTPUT INTO возвращает значения из обновляемой таблицы (WorkOrder), а также из таблицы Product. Таблица Product используется в предложении FROM, чтобы указать строки для обновления.

Кто-нибудь работал с этой функцией?

(Тем временем я переписал свой код, чтобы выполнить работу, используя цикл курсора, но это ужасно, и мне все еще любопытно)

Ответы на вопрос(5)

Ваш ответ на вопрос