Страницы

Поиск по вопросам

четверг, 9 января 2020 г.

Как получить отображение вставленных данных(insert) на исходную таблицу?

#sql_server


Есть 2 таблицы (гипотетические) 

TableSource(id int IDENTITY(1,1), value int, order int) 

TableTarget(id int IDENTITY(1,1), value)


И операция вставки данных из первой во вторую

INSERT TableTarget(value)
SELECT s.value 
FROM TableSource s
WHERE order < 10


Мне нужно как-то получить отображение id записей из TableSource на новые вставленные
строки в TableTarget. 

IdTableSource | idTableTarget
-----------------------------
2             | 1
4             | 2
5             | 3
7             | 4
9             | 5


Возможно есть какой то способ добавить эти данные в OUTPUT, но не нашёл как. 
    


Ответы

Ответ 1



способ добавить эти данные в OUTPUT INSERT не позволяет направлять в OUTPUT любые столбцы из источника (лишь те, которые доступны в inserted). Это возможно только помощью MERGE: MERGE INTO TableTarget T USING ( SELECT id, value FROM TableSource WHERE [order] < 10 ) S ON 1 = 0 WHEN NOT MATCHED THEN INSERT (value) VALUES (S.value) OUTPUT S.id AS idSource, inserted.id AS idTarget;

Комментариев нет:

Отправить комментарий