Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Trigger mi, Stored Procedure mü?
#1
İyi çalışmalar arkadaşlar insert, update olaylarında ağırlıklı olarak trigger kullanmayımı, yoksa stored procedure kullanmayımı tercih ediyorsunuz. ikisinin arasındaki hız ve performans farkı konusunda fikriniz nedir. Selamlarla.
Cevapla
#2
Merhaba
Trigger bir event, storedproc ise methot'tur. Birbirine tercih edilmesi söz konusu olmaz.
Fakat sanrım sunu anlatmak istediniz; 
uygulamadan insert, update yaptıgımızda eger buna bağlı başka kontroller yapmanız gerekiyorsa  hangısıne yaptırmalıyız ?

1-Tireggerlar kayıt işlemi yaptğınızda otomatik devreye girer, storedproc  ise uygulamadan sizin execute etmeniz gerekir
2-Hata oluşursa trigger içinde  rollback komutu ıle tum işlemi geri alırsınız , storedproc ile ise hatayı yakalayıp, yapılan işlemi ve kayıtları tespit edip silmeniz yada geri düzeltmeniz gerekecektir.
3-trigger içinde inserted ve deleted tablolaları etkin kullanılır, storedprocta 'da output komutu ıle tablo tipi değişkenlerle işlem yapmanız gerekır. bu durumda insert, update işlemini uygulamadan değil storedproc ile yapmanız gerekecektir.
4-Eğer veri butunlugunu korumak gerekıyorsa trigger kullanmalısınız.Mesela bır tablodan sılınen kayıtın diğer tabloya eklenmesi şart, olmazsa olmaz dıyorsanız trıgger tercıh olmalı.

Bircok sey daha soylenebılır fakat aklıma gelen soyleyebılıcegım bunlar.
Dersenız kı trıggerı etkın kullanmak ıcın kod yazımında nelere dıkkat etmelyım, o da farklı bır husus. tırgger ıcınde kodlar kısa, sade, amacını en kısa yoldan halletmelı. 
Execute suresı minimum olmalı tablolara erısımı kılıtlememelı.
Cevapla
#3
Teşekkürler serdar bey bilgilendirme için , konuyu çok güzel özetlemişsiniz.
Cevapla
#4
Trigger (Tetikleyici), aşağıdaki durumlarda çalışır;
Before Insert
After Insert
Before Update
After Update
Before Delete
After Delete
veritabanı bütünlüğünü sağlamak için en ideal kullanım şeklidir.
Misal Cari hesap ve fatura tablolalarınız var, cari hesap tablonuzda borc ve alacak alanlarınız olsun, her fatura girildiğinde borç yada alacak alanınızı fatura tutarı kadar arttırıp azaltmanız gerekiyor, bu durumda trigger kullanmanız size büyük rahatlık sağlayacaktır.

Stored Procedure (Depolanmış Yordam),
insert,update,delete veya select işlemlerini veritabanının içine yazıp, dışarıdan verilen parametreler ile çalışması sağlanan bir yapıdır.
Misal fatura tablonuza kayıt ekleyeceksiniz. Fatura_Kayit proceduru yazıp delphi tarafında Fatura_Kayit(id, tarih, tutar) şeklinde stored procedure ile değişkenleri gonderip kaydı yaptırabilirsiniz.
Bu arada Fatura_After_Insert triggeride Cari tablosundaki borc alanını durumua gore arttırıp azaltabilir.
WWW
Cevapla
#5
(03-02-2020, Saat: 08:42)serdar Adlı Kullanıcıdan Alıntı: Merhaba
Trigger bir event, storedproc ise methot'tur. Birbirine tercih edilmesi söz konusu olmaz.
Fakat sanrım sunu anlatmak istediniz; 
uygulamadan insert, update yaptıgımızda eger buna bağlı başka kontroller yapmanız gerekiyorsa  hangısıne yaptırmalıyız ?

1-Tireggerlar kayıt işlemi yaptğınızda otomatik devreye girer, storedproc  ise uygulamadan sizin execute etmeniz gerekir
2-Hata oluşursa trigger içinde  rollback komutu ıle tum işlemi geri alırsınız , storedproc ile ise hatayı yakalayıp, yapılan işlemi ve kayıtları tespit edip silmeniz yada geri düzeltmeniz gerekecektir.
3-trigger içinde inserted ve deleted tablolaları etkin kullanılır, storedprocta 'da output komutu ıle tablo tipi değişkenlerle işlem yapmanız gerekır. bu durumda insert, update işlemini uygulamadan değil storedproc ile yapmanız gerekecektir.
4-Eğer veri butunlugunu korumak gerekıyorsa trigger kullanmalısınız.Mesela bır tablodan sılınen kayıtın diğer tabloya eklenmesi şart, olmazsa olmaz dıyorsanız trıgger tercıh olmalı.

Bircok sey daha soylenebılır fakat aklıma gelen soyleyebılıcegım bunlar.
Dersenız kı trıggerı etkın kullanmak ıcın kod yazımında nelere dıkkat etmelyım, o da farklı bır husus. tırgger ıcınde kodlar kısa, sade, amacını en kısa yoldan halletmelı. 
Execute suresı minimum olmalı tablolara erısımı kılıtlememelı.

Eyvallah hocam tabiki de tercih meselesi anlamında yazmadım. Genel anlamda arkadaşların hem trigger ve sp lerle kullanımı hakkındaki yöntemlerini paylaşması, hemde trigger ve sp yi aktif kullanmayan arkadaşları bilgilendirmek maksatıyla açtım. Güzel özetiniz için teşekkür ederim.
Cevapla




Konuyu Okuyanlar: 1 Ziyaretçi