TSQL INSERT INTO SELECT - отображать строки
Можно ли отобразить, какие строки я вставил с помощью этого запроса:
INSERT INTO dbo.Table (Col1, Col2, Col2)
(SELECT
Col1,
Col2,
'Something modified',
FROM dbo.Table
WHERE Col10 = 66)
Важно получить всю новую строку со значением PrimaryKey и т. Д., А не только Col1, Col2, Col3
1 ответ
Решение
OUTPUT
пункт твой друг сейчас:
INSERT INTO steam.DocumentGeographies (Col1, Col2, Col3)
OUTPUT inserted.*
(SELECT
Col1,
Col2,
'Something modified',
FROM dbo.Table
WHERE Col10 = 66)
Вы можете вставить результат OUTPUT
указав таблицу назначения с INTO
предложение или упаковав запрос как подзапрос:
INTO
пункт
Это полезно, когда вы хотите вставить одинаковые данные в две таблицы. Вы всегда можете перечислить необходимые поля в предложении OUTPUT (вставлено. Кол1, вставлено. Кол2)
INSERT INTO steam.DocumentGeographies (Col1, Col2, Col3)
OUTPUT inserted.* INTO DestinationTableName(Col1, Col2, Col3)
(SELECT
Col1,
Col2,
'Something modified',
FROM dbo.Table
WHERE Col10 = 66)
подзапрос
Это полезно, когда вы хотите присоединить OUTPUT к другим таблицам или хотите выполнить вычисления (например, суммирование или подсчет значений) и вставить эти результаты в другую таблицу.
INSERT INTO DestinationTableName
(Col1, Col2, Col3)
SELECT Col1, Col2, Col3 FROM (
INSERT INTO steam.DocumentGeographies (Col1, Col2, Col3)
OUTPUT inserted.*
(SELECT
Col1,
Col2,
'Something modified',
FROM dbo.Table
WHERE Col10 = 66)
) TMP