Veritabanlarında veri yığınları ile işlem yaparken her bir insert işleminin veritabanında olup olmadığını kontrol edebilmek mümkün olmadığı için ve mükerrer veriler oluşturmamak için "Eğer tabloda yoksa ekle (Insert if not exists)" işlemi uygulanır, bu işlemin bir olası diğer senaryosu da "zaten varsa güncelle" işlemidir. Güncel veritabanı sistemleri bu işlemi kısaca upsert olarak isimlendirir ve dahili metodlar da sunarlar. Örneğin mongodb'de metodların upsert parametreleri bulunmaktadır.
Sql Server'da "eğer tabloda yoksa ekle" işlemi için tercih edilebilecek bir çok yaklaşım mevcut ve çözümlerden birisi de aşağıdaki gibi olabilir:
Örnek: Personel tablosunda aynı ada ve soyada sahip olan birisi varsa ekleme, yoksa ekle.
IF NOT EXISTS (SELECT * FROM tbl_personel WHERE Adi = @Adi AND Soyadi = @Soyadi)
BEGIN
INSERT INTO tbl_personel (Adi, Soyadi, SicilNo)
VALUES (@Adi ,@Soyadi, @SicilNo)
END
Örnek 2: Personel tablosunda yer almıyorsa kişiyi ekle, yer alıyorsa da bilgilerini güncelle (Upsert) işlemini Sql Server'da SQL kodları ile hazırlayalım.
IF NOT EXISTS (SELECT * FROM tbl_personel WHERE Adi = @Adi AND Soyadi = @Soyadi)
BEGIN
INSERT INTO tbl_personel (Adi, Soyadi, SicilNo)
VALUES (@Adi ,@Soyadi, @SicilNo)
END
ELSE
BEGIN
UPDATE tbl_personel
SET SicilNo = SicilNo
WHERE Adi = @Adi, Soyadi = @Soyadi
END
Editör editi: sitedeki bazı diğer benzer yazılar için;
bkz: SQL Server While Kullanımı ve Örnekleri
bkz: SQL Server With CTE Kullanımı ve Örnekleri
bkz: SQL Server'da bir tabloyu temizlemek
bkz: SQL Server'da tüm trigger'ları listelemek
bkz: SQL Server'da veritabanı script'ini verilerle oluşturmak
bkz: SQL Server'da ilk satıra göre join etmek