Sql Server'da Eğer Yoksa Eklemek Eğer Varsa Güncellemek

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

kaanbey

08.11.2021 19:48

Bu soru henüz yanıtlanmamış.

Bu soruya sadece kayıtlı kullanıcılar yanıt yazabilirler. Yanıt yazmak için lütfen giriş yapınız.

Reitix
Sql Server'da Eğer Yoksa Eklemek Eğer Varsa Güncellemek

İnternet sitemizdeki deneyiminizi iyileştirmek için çerezler kullanıyoruz. Bu siteye giriş yaparak çerez kullanımını kabul etmiş sayılıyorsunuz. Daha fazla bilgi.