实现 MERGE 功能

数据库可能需要执行插入或更新操作,具体取决于数据库中是否存在特定行。

如果不使用该 MERGE 语句,可以在 Transact-SQL 中使用以下一种方法:

UPDATE mytable SET col=@somevalue WHERE myPK = @parm  
IF @@ROWCOUNT = 0  
    INSERT mytable (columns) VALUES (@parm, @other values)  

实现合并的另一个 Transact-SQL 方法:

IF EXISTS (SELECT 1 FROM mytable WHERE myPK = @parm)  
    UPDATE....  
ELSE  
    INSERT  

对于本机编译的存储过程

DECLARE @i  int  = 0  -- or whatever your PK data type is  
UPDATE mytable SET @i=myPK, othercolums = other values WHERE myPK = @parm  
IF @i = 0  
   INSERT....  

另请参阅

本机编译存储过程的迁移问题
Transact-SQL 构造在 In-Memory OLTP 中不受支持