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
Другие вопросы по тегам