MERGE语句的“WHEN MATCHED”子句中不允许使用“INSERT”类型的操作

时间:2016-10-18 18:43:41

标签: sql-server

我想执行“软删除”。即匹配时插入新条目,不匹配时只插入条目。

例如:

MERGE TargetTable AS targetT 
USING SourceTable AS sourceT ON sourceT.Npi = targetT.Npi
WHEN MATCHED AND IsNull(targetT.SPI, '') <> '' THEN
    UPDATE SET targetT.Isdelete = 1 --Update Only One Column
    --And also insert a new row
WHEN NOT MATCHED 
    --Perform insert operation 

1 个答案:

答案 0 :(得分:0)

合并声明不会以这种方式工作。你必须以老式的方式(使用存储过程才能工作)。

看起来您正在尝试创建存档记录。如果这是真的,我建议您使用合并,因为它打算使用,并使用更新后触发器来满足您的审计需求。