T-SQL : 'Kayıt varsa güncelle, yoksa ekle' durumu için iki farklı yöntem

Uğur ÇELENK tarafından yayınlanmıştır 5. Kasım 2008 16:05

İlk Yöntem

Öncelikle update işlemi gerçekleştirilir, bu işlem sonucunda etkilenen kayıt sayısı kontrol edilir, eğer @@ROWCOUNT = 0 ise güncellenebilecek bir kayıt bulunmuyor demektir, bu durumda kayıt eklenir.

    UPDATE Tablo1 SET Kolon1 =  @Kolon1_Degeri WHERE ID = @ID
    IF @@ROWCOUNT = 0
    BEGIN
       INSERT INTO Tablo1 (Kolon1) VALUES (@Kolon1_Degeri)
    END
 

İkinci Yöntem

Öncelikle kaydın olup olmadığını anlamak için IF EXISTS kullanılarak select cümlesi çalştırılır. Kayıt varsa güncelleme işlemi yapılıyor, yoksa ekleme işlemi yapılıyor. 

    IF EXISTS(SELECT ID FROM Tablo1 WHERE ID = @ID)
    BEGIN
       UPDATE Tablo1 SET Kolon1= @Kolon1_Degeri WHERE ID = @ID
    END
    ELSE
    BEGIN
       INSERT INTO Tablo1 (ID, Kolon1) VALUES (@ID, @Kolon1_Degeri)
    END


Peki hangi yöntem performans açısından daha iyidir?

Kesinlikle X. yöntem kullanılmalıdır gibi birşey söylemek mümkün değil, tamamen kullandığınız yapıyla ilgili sizin karar vermeniz gerekmektedir. Şöyle ki,
- Eğer kayıt  büyük ihtimalle bulunuyorsa yani güncelleme işleminin büyük ihtimalle gerçekleşeceğini düşünüyorsanız 1. yöntemi uygulamak performans açısından daha iyi olacaktır.
- Eğer büyük ihtimalle insert işlemi gerçekleşecek diyorsanız, 1. yönteme göre 2. yöntemi uygulamak daha mantıklı olacaktır. Çünkü INSERT ve UPDATE işlemleri pahalı işlemlerdir.

Yorum ekle


(Gravatar simgesi için)  

  Country flag

biuquote
  • Yorum
  • Canlı önizleme
Loading



 Son Yorumlar

Yorumlar RSS
Oturumu aç