Sql server 类型为'的动作;插入';在';匹配时';MERGE语句的子句

Sql server 类型为'的动作;插入';在';匹配时';MERGE语句的子句,sql-server,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 --An

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

例如:

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 
将TargetTable合并为targetT
将SourceTable用作sourceT.Npi=targetT.Npi上的sourceT
如果匹配且为空(targetT.SPI,“)”,则
更新集targetT.Isdelete=1——只更新一列
--并插入一个新行
当不匹配时
--执行插入操作

合并语句将不会以这种方式工作。您必须以老式的方式进行操作(使用存储过程可以)


看起来您正在尝试创建存档记录。如果这是真的,我建议您按预期使用合并,并使用更新后触发器来执行审计需要。

合并语句不会以这种方式工作。您必须以老式的方式进行操作(使用存储过程可以)


看起来您正在尝试创建存档记录。如果这是真的,我建议您按预期使用合并,并使用更新后触发器来满足您的审核需求。

匹配表示记录已经存在,因此插入没有实际意义。更新确实…匹配时意味着记录已经存在,因此插入实际上没有意义。更新不。。。