Trigger bir tabloda gerçekleşen sql sorgu sonucuna göre başka bir tablodaki sorgunun çalışmasını sağlayan yapıdır. Örneğin kitap ve stok adında tablolarınız olduğunu varsayın. Kitap tablosuna yeni bir kitap eklediğinizde stok tablosundaki kayıt sayısı da 1 artsın gibi işlemleri trigger ile yapabilirsiniz. Bu işlem bir tablodaki işlemin başka tablodaki bir işlemi etkilemesi yerine bir işlemin aynı tablodaki başka bir yeri etkilemesi gibi de oluşturulabilir.
Trigger iki şekilde çalışır
1. Ana sorguyu engellemek (instead of)
2. İkisini birlikte çalıştırma (after-for)
1.Trigger Yazma – AFTER
Aşağıda department adlı tablomuza insert işlemi yapıldıktan sonra tetiklenecek sorguyu Begin ve End blokları arasında verdik. Koda göre Deparment tablosuna bir insert işlemi yapıldığında ekrana ‘Yeni Departman Kaydı Yapıldı’ isimli bir uyarı gelecektir.
Create trigger Deneme on Department After insert as Begin select ' Yeni bir departman kaydı yapıldı' as UYARI End
- After insert yerine after update, after delete gibi varyasyonlar da kullanabiliriz.
- Bir işleme birden fazla trigger verilebilir. Örneğin insert işlemine bir trigger daha verirsek insert işlemi yapıldığında tetiklenecek iki adet olayımız olmuş olur.
Gün içinde kaç departman eklendiğini hesaplayan trigger.
Create trigger Deneme on Department After insert as Begin update Guncelleme set Sayac=Sayac+1 End
2. INSTEAD OF
Tetikleyiciler ile birlikte kullanılan bir kontrol komutudur. Aşağıda Department tablosuna bir kayıt insert etmek istediğimizte insert etmek yerine içeri yazılan select komutunu çalıştıracaktır.
Create trigger Deneme2 on Department instead of insert as Begin select 'insert işlemi yerine bu sorgu çalıştı' as UYARI End