带输出插入的SQL插入
我想这件事让我有点头晕。我试过一些不同的方法,真的不应该这么复杂。也许有人能帮我 我有一个数据表(源),我需要将其复制到其他两个表(target1和target2)。这些表之间有一个FK约束。因此,我需要将插入记录的id输出到第二个表中。我得到的最接近的结果是使用合并,但它抱怨: 输出到子句不能位于(主键,外键)的任一侧 (关键)关系 欢迎在以下方面提供任何帮助,或者如果我完全走错了路,我将感谢您提供的任何指导:带输出插入的SQL插入,sql,sql-server,Sql,Sql Server,我想这件事让我有点头晕。我试过一些不同的方法,真的不应该这么复杂。也许有人能帮我 我有一个数据表(源),我需要将其复制到其他两个表(target1和target2)。这些表之间有一个FK约束。因此,我需要将插入记录的id输出到第二个表中。我得到的最接近的结果是使用合并,但它抱怨: 输出到子句不能位于(主键,外键)的任一侧 (关键)关系 欢迎在以下方面提供任何帮助,或者如果我完全走错了路,我将感谢您提供的任何指导: BEGIN TRAN; MERGE [DBTarget].[dbo].[Targe
BEGIN TRAN;
MERGE [DBTarget].[dbo].[TargetTable1] AS T
USING [DBSource].[dbo].[SourceTable] AS S ON (T.[Col1] = S.[Col1])
WHEN NOT MATCHED BY TARGET
THEN INSERT([Col1] -- Target column
,[Col2] -- Target column
,[Col3] -- Target column
,[Col4])-- Target column
VALUES(S.[Col1] -- Source column
,(SELECT [Col9] FROM [DBSource2].[dbo].[SourceTable2] YI WHERE YI.[Col1] = S.[Col1]) -- Here i am reaching out to another table for a column value for the inserted row
,S.[Col3] -- Source column
,S.[Col4])-- Source column
OUTPUT
inserted.Id -- Value inserted to: [DBTarget].[dbo].[TargetTable2].[Col1]
,S.[Col2] -- Value inserted to: [DBTarget].[dbo].[TargetTable2].[Col2]
,S.[Col3] -- Value inserted to: [DBTarget].[dbo].[TargetTable2].[Col3]
,NULL -- Value inserted to: [DBTarget].[dbo].[TargetTable2].[Col4]
INTO [DBTarget].[dbo].[TargetTable2] ([Col1]
,[Col2]
,[Col3]
,[Col4]);
ROLLBACK TRAN;
GO
下面是一个将输出与INSERT INTO语句一起使用的示例,但在merge中,语法无论如何都不可用。使用单独的DML语句对您来说也可能更有效。但是,您的场景让我对模式和这样做的原因感到疑惑,尽管我知道我们并不总是能够选择在该重新命名中执行什么操作。Shere是一个小时使用INSERT INTO语句输出的示例,但语法在merge中并不可用,因为您执行该操作的方式。使用单独的DML语句对您来说也可能更有效。但您的场景让我对模式和这样做的原因感到疑惑,尽管我知道在这方面我们并不总是可以选择要做什么