21 Ağustos 2010 Cumartesi

Sql Triggers (Tetikleyiciler)

Sql'in en onemli ve en cok kullanilan ozelliklerinden biri de tetikleyici(triggers) kavramidir. Kisaca ne anlama geldigini incelersek, Turkce karsiligindan bir seyler belirmistir. Sql dilinden konusursak, insert, delete veya update islemleri yapildiktan hemen sonra devreye girip belirtilen isleri yapmakla yukumlu kontrollerimizdir. C#'daki karsiligi eventlerdir(olaylar). Fakat burada delegelerle karsilasmayacagiz cok şükür. :)

Olusturulma syntax'i function,view,sp'ler gibidir;

CREATE TRIGGER TriggerIsmi
ON TetiklenecekTablo
AFTER Delete/Update/Insert
AS
BEGIN
--Yapmak istedigimiz sorgular
END

Olusturulma mantigini gosterdikten sonra da bir kac komut tanimlamaya calisacagim. Ozellikle triggerlar da en cok kullanilan komutlardan biri de ROLLBACK kavramidir;

* Rollback: Trigger içinde rollback komutu çalıştığında, triggerı tetiklemiş olan işlem iptal edilir.

* Triggerlarda bilmemiz gereken en onemli konulardan biri de, triggerlarin kendi iclerinde kullandiklari iki tablolari vardir.
  1. Inserted
  2. Deleted
* Bu tablolar Disc'de bulunmazlar. Ram'de bizim icin triggerlarin calisma sirasinda olusturulup bize sanal tablo yaratirlar.
* Eger insert islemi yapip triggerlari calistiriyorsak, eklenen verilerimiz Inserted tablosunda saklanir. Eger Delete islemini yaparsak da, silinen veri Deleted sozde tablosuna tasinir.
** Eger Update islemi yaparsak da, eski deger Deleted tablosuna, update ettigimiz yeni veri de Inserted sozde tablosuna tasinir.

0 yorum: