sql serverde trigerler ve cursorlar ve stored procedure ‘ler öncelikle performans sonrada bazı güvenlik artıları için kullanılır.
Triggerler (tetikleyiciler) i bazen database de yaptığımız bazı işlemlerde o işlem ile birlikte başka olayın tetiklenmesini istediğimizde yaparız. örneğin bir ürün tablosuna kayıt girildiğinde o kayıta ait bir log tutulması nı otomatik olarak tetikleyicilerle yapabiliriz veya ürün silmek istediğizde o ürünün başka bir tablo ile etkileşimi olduğunu kontrol eder silmesini engelleyebiliriz veya ürünü silince ttikleyici ile ürünün başka bir tablodaki veilerini de silebiliriz.
cursor ise database den aldığımız verinin içinde gezinmemizi sağlar. bunu Database den Datareader ile dataları aldığımızda da yapabiliriz. fakat bu kullanıcı makinasında (client) yapılacağı için veri eğer büyükse performansı düşürür. bu işlemi server de yapıp client a sadece istenileni göndermek ise performans olarak daha iyi olur.
Triggerler :
CREATE TRIGGER dbo.KontrolEt select @KimlikSayisi = count(*) from tblKimlik if (@KimlikSayisi = @AdresSayisi) SET NOCOUNT ON; |
şimdi kodlarımızı anlatalım
CREATE TRIGGER dbo.KontrolEt |
burada ilk satırda Trigger i oluşturuyor ve KontrolEt adını veriyoruz.Sonra hangi tablo üzerinde işlem olduğunda tetikleneceğini veriyoruz on dbo.tblKimlik ile.
after insert,delete,update ise tablonun hangi işlemlerden etkilendiğinde tetikleyicimizin çalışacağını gösterir.
AS select @KimlikSayisi = count(*) from tblKimlik |
burda ise trigeri başlatıyor ve AdresSayisi ve KimlikSayisi isimli 2 değişken deklare ediyoruz. Daha sonra Select cümlemiz ile tblKimlik tablomuz ve tblAdres tablomuzdan kayır sayısını alıp karşılaştırıyoruz.
if (@KimlikSayisi = @AdresSayisi) set nocount on; end |
KimlikSayisi AdresSayisi ne eşitse tblLog Adlı tablomuza doğru değilse yanlış kayıtınnı işliyoruz.
set nocount on; end kısmında ise işlemimizi bitiriyoruz.
tabiki teikleyicimiz inser,delete,update işlemi yapıldığı anda tblKimlik tablosu üstünde çalışmaya başlayacaktır.
Trigerler select işleminde çalışmaz sadece insert,update, delete işlemlerinde çalışırlar.
Hiç yorum yok:
Yorum Gönder