我需要将#temp_table
中的新项目合并到table_a
中。
还有一个parent_table
,它有一个主键标识列parent_table_id
(而table_a
有一个parent_table_id
对应的外键列。 table_a
中的每个项目都指向父表中的相应条目。
因此,对于#temp_table
中的每个项目,我需要同时插入table_a
和parent_table
。
问题是,假设我首先合并到parent_table
,如何在所有parent_table_id
插入中设置所有相应的table_a
项?我在考虑向parent_table_id
添加#temp_table
列,最初设置为null,然后在合并后用值填充它,但我不太确定如何解决这个问题。 parent_table
中没有其他唯一列可用于在插入新列后选择新列,而不是parent_table_id
。
答案 0 :(得分: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);
包含所有父表id的@Ids中的结果以及来自其他地方的其他重要信息(即加入table_a)。