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

Bisakah saya menggunakan pernyataan MERGE di SQL Server 2005?

MERGE diperkenalkan di SQL Server 2008. Jika Anda ingin menggunakan sintaks itu, Anda harus memutakhirkan.

Jika tidak, pendekatan tipikal akan bergantung pada dari mana sumber data berasal. Jika hanya satu baris dan Anda tidak tahu apakah Anda perlu memperbarui atau menyisipkan, Anda mungkin akan melakukannya:

UPDATE ... WHERE key = @key;

IF @@ROWCOUNT = 0
BEGIN
    INSERT ...
END

Jika sumber Anda adalah tabel #temp, variabel tabel, TVP, atau tabel lainnya, Anda dapat melakukan:

UPDATE dest SET ...
  FROM dbo.destination AS dest
  INNER JOIN dbo.source AS src
  ON dest.key = src.key;

INSERT dbo.destination SELECT ... FROM dbo.source AS src
  WHERE NOT EXISTS (SELECT 1 FROM dbo.destination WHERE key = src.key);

Seperti halnya MERGE (dan seperti yang Michael Swart didemonstrasikan di sini ), Anda masih ingin mengelilingi salah satu metode ini dengan transaksi yang tepat, penanganan kesalahan, dan tingkat isolasi agar berperilaku seperti operasi tunggal yang sebenarnya. Bahkan satu MERGE pernyataan tidak melindungi Anda dari konkurensi.

Saya telah menerbitkan beberapa peringatan lain tentang MERGE di lebih detail di sini .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. temukan entri yang hilang untuk hari kerja dan isi baris dengan nilai dari tanggal terdekat

  2. Buat pekerjaan SQL Server secara otomatis

  3. Bagaimana menjalankan fungsi bernilai Tabel

  4. Cara sederhana untuk mengubah urutan kolom dan baris dalam SQL?

  5. Substring T-SQL - 3 Karakter Terakhir