Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да upsert (актуализирам или вмъкна) в 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# или какъвто и да е друг, който използвате).

Актуализация: или можете просто да напишете целия този израз в един дълъг низ (осъществимо - но не много полезно) - или можете да го обвиете в съхранена процедура:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - Значение на ПЪРВИЧЕН КЛЮЧ, УНИКАЛЕН КЛЮЧ и КЛЮЧ, когато се използват заедно при създаване на таблица

  2. Групово вмъкване на SQL Server – част 1

  3. Как да създадете функция в SQL Server

  4. Изпълнете тригер само когато определени колони се актуализират (SQL сървър)

  5. Достъп директно до база данни на Sql сървър в Xamarin.Forms