私はテーブルにいくつかのデータをUPDATEまたはINSERTする古典的なケースがあります。私はちょうど私が更新を行う必要がありますし、私はゼロROWCOUNTを取得する場合は、次にINSERTを行うかどうかはわかりません。あるいは、MERGEステートメントがこれを置き換えたという噂を聞いたことがありますが、この状況でどうやったら適切かどうかわかりません。ここでSql2008 MERGE構文を実行する必要がありますか?
ここでは、これを証明するのに役立ついくつかのサンプルSQLは...
ALTER PROCEDURE [dbo].[InsertLocationName]
(
@SomeId INTEGER,
@SomeName NVARCHAR(100)
)
AS
BEGIN
SET NOCOUNT ON
UPDATE TableFoo
SET SomeName = @SomeName
WHERE SomeId = @SomeId
-- Did we update something?
IF @@ROWCOUNT <= 0
-- Nope, so add the record.
INSERT INTO TableFoo
VALUES (@SomeName)
END
考えですか?
マルク、uは私の例のSQLを使用して返信を編集することができますか? –
@Marcなので、ターゲットテーブルとソーステーブルを同じにすることはできません。 –
nope - それは動作しません。あなたはあなたのすべてのデータを持っている実際のテーブルを持っている必要がありますし、変更を適用するテーブルが必要です –