SQL Server 2008 dan yang lebih baru memiliki pernyataan MERGE yang melakukan hal itu.
Lihat dokumen MSDN Books Online tentang MERGE untuk detailnya.
Pada dasarnya, Anda memerlukan empat hal:
- sebuah sumber (tabel atau tampilan atau pernyataan SELECT sebaris)
- sebuah target
- a BERGABUNG kondisi yang menghubungkan keduanya
- pernyataan untuk kasus ketika ada MATCH (baris ada di sumber dan target), NOT MATCHED (ketika baris belum ada di target) dan seterusnya
Jadi pada dasarnya Anda mendefinisikan sesuatu seperti:
MERGE (targettable) AS t
USING (sourcetable) AS s
ON (JOIN condition between s and t)
WHEN MATCHED THEN
UPDATE SET t.Col1 = s.Col1, t.Col2 = s.Col2 (etc.)
WHEN NOT MATCHED THEN
INSERT(Col1, Col2, ..., ColN) VALUES(s.Col1, s.Col2, ......, s.ColN)
Ini dilakukan sebagai satu pernyataan dan sangat dioptimalkan oleh SQL Server.