SQL

T-SQL ‘Kayıt varsa güncelle, yoksa ekle’

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

ilk 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.

1
2
3
4
5
6
7
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.

1
2
3
4
5
6
7
8
9
10
11
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.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu