实现 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....  

另请参阅

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