#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;
Комментариев нет:
Отправить комментарий