sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man lägger upp (uppdatera eller infogar) i SQL Server 2005

Försök att kontrollera om det finns:

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

Du kan enkelt slå in detta i en lagrad procedur och bara anropa den lagrade proceduren från utsidan (t.ex. från ett programmeringsspråk som C# eller vad du nu använder).

Uppdatering: antingen kan du bara skriva hela det här uttalandet i en lång sträng (genomförbart - men egentligen inte särskilt användbart) - eller så kan du slå in det i en lagrad procedur:

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

och sedan bara anropa den lagrade proceduren från din ADO.NET-kod



  1. En guide för att distribuera TimescaleDB med Docker

  2. Entity Framework - One-to-One - ReferentialConstraint mappas till en butiksgenererad kolumn

  3. Hur kan jag gå igenom alla rader i en tabell? (MySQL)

  4. Alternativ till LOAD_FILE()-funktionen?