データベースでは、特定の行がすでに存在するかどうかによって、挿入または更新の操作を実行する必要がある場合があります。
MERGE ステートメントを使用しない場合、Transact-SQL で使用できる 1 つのアプローチを次に示します。
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 の構造