我使用MERGE
将记录插入或更新到表格中:
MERGE INTO target
USING SELECT * FROM @source
WHEN MATCHED THEN
UPDATE SET ...columns...
WHEN NOT MATCHED THEN
INSERT ...columns...
OUTPUT inserted.* INTO @insertedRecord
如果上述语句执行更新,是否将更新的记录插入表变量?
答案 0 :(得分:3)
是
4.dat
psuedotable将处理进入表格的新值,无论是插入还是更新。
inserted
pseudotable将处理旧值,无论是删除还是更新(对于更新,它都是以前的值)。
更整洁:您也可以在合并中引用源表,例如deleted
(尽管您可能需要一个别名才能使其工作)。
答案 1 :(得分:2)
$action
会为您提供操作类型。
inserted.*
将为您提供插入行的更新和值的新值。
deleted.*
会为已删除行的更新和值提供旧值。
您可能希望将其推入临时表
OUTPUT $action, inserted.*, deleted.*, @source.* into #changes
并使用它来获得您正在寻找的结果。