Страницы

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

понедельник, 18 февраля 2019 г.

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

Есть 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;

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

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