SQL Server 2008’de gelen yeniliklerden birisi de MERGE ifadesi.
Merge, temelde bir hedef tabloyu ve bir kaynak sorguyu karşılaştırır. Kaynak ile hedefte bir kolonun değerinin aynı olmasına (ve istenen olası ek koşullara) bakarak MERGE ifadesi INSERT, UPDATE ya da DELETE olarak çalışabilir.
Komutun kullanım örneklerini SQL Server Books Online’da bulabilirsiniz. Ben burada bu komutun Integration Services paketleri açısından önemine değinmek istiyorum.
Aşağıdaki kısım bu konuda SQL Server Books Online’da yer alan makalenin giriş kısmından çevrilmiştir:
SQL Server 2008 Integration Services’ta, bir Execute SQL görevindeki SQL ifadesi MERGE ifadesini içerebilir…
“Tipik olarak MERGE ifadesini bir tabloya bir başka tablodan kaynaklı INSERT, UPDATE ve DELETE işlemleri yapmak istediğinizde kullanırsınız. SQL 2008’den önce bunun için hem bir Lookup dönüşümü kullanmanız hem de birden fazla OLE DB Command dönüşümü kullanmanız gerekirdi. Lookup dönüşümünün görevi satır satır bir karşılaştırma yaparak her bir satırın değişmiş mi yoksa yeni mi olduğunu belirlemekti. Bu sonuca bağlı olarak da OLE DB Command dönüşümleri gerekli INSERT, UPDATE ya da DELETE’leri yapmak için kullanılırdı. SQL Server 2008’de bunlar yerine tek bir MERGE ifadesi kullanılabilir.
Bunun için genelde bir ara tablo oluşturmanız gerekse de özellikle yüklü Lookup işlemlerine göre daha performanslı bir çalışma elde edebilirsiniz.”
Konuyu daha geniş çaplı incelemek isterseniz, SQL Server Books Online’da “Using Merge in Integration Services Packages” başlığını aratabilirsiniz.