是否可以显示通过此查询插入的行:
INSERT INTO dbo.Table (Col1, Col2, Col2) (SELECT Col1, Col2, 'Something modified', FROM dbo.Table WHERE Col10 = 66)
重要的是,不仅要使用Col1,Col2,Col3,而且还要用它的PrimaryKey值等获得整个新行。
该 OUTPUT 子句现在是您的朋友:
OUTPUT
INSERT INTO steam.DocumentGeographies (Col1, Col2, Col3) OUTPUT inserted.* (SELECT Col1, Col2, 'Something modified', FROM dbo.Table WHERE Col10 = 66)
您可以OUTPUT通过使用INTO子句指定目标表或将查询包装为子查询来插入的结果:
INTO
INTO 条款
当您要将相同的数据插入两个表时,这很有用。 您始终可以在OUTPUT子句中列出所需的文件(insertted.Col1,insert.Col2)
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