sql >> Database >  >> RDS >> Sqlserver

Hoe upsert (bijwerken of invoegen) in SQL Server 2005

Probeer het bestaan ​​te controleren:

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

Je zou dit gemakkelijk in een opgeslagen procedure kunnen stoppen en die opgeslagen procedure gewoon van buitenaf kunnen aanroepen (bijvoorbeeld vanuit een programmeertaal zoals C# of wat je ook gebruikt).

Bijwerken: ofwel kun je deze hele instructie gewoon in één lange reeks schrijven (uitvoerbaar - maar niet echt handig) - of je kunt het in een opgeslagen procedure inpakken:

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

en roep dan die opgeslagen procedure gewoon op vanuit je ADO.NET-code



  1. Hoe veilig is authenticatie in het mysql-protocol?

  2. EXPLAIN en COUNT geven twee verschillende waarden terug

  3. slqlalchemy UniqueConstraint VS Index (uniek =True)

  4. Verstreken tijd vanaf een bepaalde tijd in de database