Есть 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, но не нашёл как.
Ответ
способ добавить эти данные в 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;
Комментариев нет:
Отправить комментарий