0

我需要将新项目合并#temp_table到一个table_a.

还有一个parent_table,它有一个主键标识列parent_table_id(并且table_a有一个对应的外键列 a parent_table_id)。in 中的每个项目都table_a指向父表中的相应条目。

因此,对于 中的每个项目#temp_table,我都需要插入table_aparent_table

问题是,假设我合并到第parent_table一个,如何parent_table_id在所有插入中设置所有相应的项目table_a?我正在考虑向 中添加一parent_table_id#temp_table,最初设置为 null,然后在合并后用值填充它,但我不太确定该怎么做。除了. parent_table_parent_table_id

4

1 回答 1

0

以下是一种通用的方法(精简):

MERGE parent_table AS TARGET
USING @temp_table AS SOURCE
ON
(
    TARGET.match_number = SOURCE.match_Number
)
WHEN NOT MATCHED THEN
    INSERT
    (
        item1,
        item2,
        item3
    )
    VALUES
    (
        SOURCE.item1, 
        SOURCE.item2, 
        SOURCE.item3, 
    )
OUTPUT INSERTED.parent_table_id, SOURCE.reference_number INTO @Ids (parent_table_id, reference_number);

结果@Ids 包含所有父表id 以及来自源的其他重要信息,这些信息可以在其他地方使用(即加入table_a)。

于 2014-03-21T04:12:36.447 回答