我有一个非常标准的脚本,它使用合并功能来插入,更新和删除记录。但是,将删除的结果输出到审计类型表时遇到了很多麻烦。当我对一个干净的目标表运行该过程时,我不知何故最终得到了审计表中的所有空值,尽管没有删除任何内容(此时只插入非审计表,这确实发生了)。在相同的条件下和相同的干净目标表,如果我删除:
OUTPUT deleted.Column1, deleted.Column2 INTO Table_Audit (Column1, Column2)
并将其替换为:
OUTPUT $action, Inserted.*, Deleted.*
我发现实际上没有删除任何内容,考虑到两个运行中的源表和目标表相同而且合并谓词保持不变,这很奇怪。第二个语句的action列中的所有记录都是我们所期望的插入。从字面上看,唯一不同的是我刚才提到的内容。关于可能发生什么的任何想法?
答案 0 :(得分:2)
查看example K。
将子查询中的merge语句放到针对审计表的insert语句中。确保其中一列为$action
并过滤要插入外部where子句的值,以仅插入已删除的行。