Share via


Implementing MERGE Functionality

A database may need to perform either an insert of an update, depending on whether a particular row already exists in the database.

Without using the MERGE statement, the following is one approach you can use in Transact-SQL:

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

Another Transact-SQL method to implement a merge:

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

For a natively compiled stored procedure

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

See Also

Migration Issues for Natively Compiled Stored Procedures
Transact-SQL Constructs Not Supported by In-Memory OLTP