sql >> データベース >  >> RDS >> Sqlserver

SQL Server 2005 でアップサート (更新または挿入) する方法

    存在を確認してください:

    IF NOT EXISTS (SELECT * FROM dbo.Employee WHERE ID = @SomeID)
    
        INSERT INTO dbo.Employee(Col1, ..., ColN)
        VALUES(Val1, .., ValN)
    
    ELSE
    
        UPDATE dbo.Employee
        SET Col1 = Val1, Col2 = Val2, ...., ColN = ValN
        WHERE ID = @SomeID
    

    これを簡単にストアド プロシージャにラップし、そのストアド プロシージャを外部から呼び出すことができます (たとえば、C# などのプログラミング言語や使用している言語から)。

    更新: このステートメント全体を 1 つの長い文字列で記述することもできます (実行可能ですが、あまり役に立ちません)。または、ストアド プロシージャにラップすることもできます。

    CREATE PROCEDURE dbo.InsertOrUpdateEmployee
           @ID INT,
           @Name VARCHAR(50),
           @ItemName VARCHAR(50),  
           @ItemCatName VARCHAR(50),
           @ItemQty DECIMAL(15,2)
    AS BEGIN
        IF NOT EXISTS (SELECT * FROM dbo.Table1 WHERE ID = @ID)
           INSERT INTO dbo.Table1(ID, Name, ItemName, ItemCatName, ItemQty)
           VALUES(@ID, @Name, @ItemName, @ItemCatName, @ItemQty)
        ELSE
           UPDATE dbo.Table1
           SET Name = @Name,
               ItemName = @ItemName,
               ItemCatName = @ItemCatName,
               ItemQty = @ItemQty
           WHERE ID = @ID
    END
    

    そして、そのストアド プロシージャを ADO.NET コードから呼び出すだけです



    1. PHP7.0ODBC-Windows用ドライバー

    2. FieldShieldでのプロキシベースの動的データマスキング

    3. mysqlとasp.netのID

    4. SQLで日時から日付を取得するには