Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara upser (memperbarui atau menyisipkan) di SQL Server 2005

Coba periksa keberadaannya:

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

Anda dapat dengan mudah membungkusnya ke dalam prosedur tersimpan dan cukup memanggil prosedur tersimpan itu dari luar (mis. dari bahasa pemrograman seperti C# atau apa pun yang Anda gunakan).

Pembaruan: baik Anda dapat menulis seluruh pernyataan ini dalam satu string panjang (dapat dilakukan - tetapi tidak terlalu berguna) - atau Anda dapat membungkusnya menjadi prosedur tersimpan:

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

lalu panggil saja prosedur tersimpan itu dari kode ADO.NET Anda



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menginstal komponen SQL Server Management Studio 2008 saja

  2. Basis data tunggal atau ganda

  3. Cara menentukan apa yang dikompilasi di SQL Server

  4. Tambahkan kolom jika tidak ada ke semua tabel?

  5. PHP 7.0 ODBC-Driver untuk Windows