- Katılım
- 3 Şubat 2014
- Mesajlar
- 1,744
- Tepkime puanı
- 0
- Puanları
- 0
Klasik manada Trigger , veri değişiminin hemen ardından loglar üzerinden otomatik devreye giren özel bir Stored Procedure'dür.
Create Trigger ifadesini çalıştırabilmek için , sysadmin server rolüne veya db_owner sistem rolüne veya db_dlladmin sistem rolüne sahip olmak gerekir.Ayrıca sahibi olunan tablo yada view için kullanıcı başka izne ihtiyaç duymadan trigger oluşturabilir.
Temel olarak iki farklı trigger çeşidi vardır.INSTEAD OF Ve AFTER . After triggeri sadece tablolar üzerinde tanımlanırken , INSTEAD OF ise hem tablolar hemde viewler üzerinde tanımlanabilir.
After trigger'ı ile Instead of triggeri arasındaki en önemli fark ,After trigger'ını devreye sokan olay olmuş kabul edilerek akışı trigger bırakırken , Instead of ise istenileni gerçekleştirmez,sadece sözde tablolara (inserted ,deleted) kaydeder ve basamaklı güncelleme ve basamaklı silme işlemine destek vermez.
Üç farklı olay için trigger yazılabilir , bunlar ; INSERT , UPDATE DELETE
Şimdi şöyle bir örnek yapalım , foruma yeni bir konu açıldığında , dede@gencklavyeler.com adresine mail atan bir trigger yazalım;
sql query ' den bir görünüm
Create Trigger ifadesini çalıştırabilmek için , sysadmin server rolüne veya db_owner sistem rolüne veya db_dlladmin sistem rolüne sahip olmak gerekir.Ayrıca sahibi olunan tablo yada view için kullanıcı başka izne ihtiyaç duymadan trigger oluşturabilir.
Temel olarak iki farklı trigger çeşidi vardır.INSTEAD OF Ve AFTER . After triggeri sadece tablolar üzerinde tanımlanırken , INSTEAD OF ise hem tablolar hemde viewler üzerinde tanımlanabilir.
After trigger'ı ile Instead of triggeri arasındaki en önemli fark ,After trigger'ını devreye sokan olay olmuş kabul edilerek akışı trigger bırakırken , Instead of ise istenileni gerçekleştirmez,sadece sözde tablolara (inserted ,deleted) kaydeder ve basamaklı güncelleme ve basamaklı silme işlemine destek vermez.
Üç farklı olay için trigger yazılabilir , bunlar ; INSERT , UPDATE DELETE
Şimdi şöyle bir örnek yapalım , foruma yeni bir konu açıldığında , dede@gencklavyeler.com adresine mail atan bir trigger yazalım;
Kod:
[B][COLOR=#006400][FONT=comic sans ms]CREATE TRIGGER konuAcildi
ON tbl_konular
FOR INSERT
AS
DECLARE @konuId BIGINT,@msg VARCHAR(255)
SELECT @konuId=inserted.konuId
FROM inserted
SET @msg= CAST(@konuId AS VARCHAR (16) ) + 'id li foruma yeni bir konu açıldı'
[/FONT][/COLOR][/B][B][COLOR=#006400][FONT=comic sans ms][B][COLOR=#006400][FONT=comic sans ms]EXEC master..xp_sendmail 'dede@gencklavyeler.com' , @msg
[/FONT][/COLOR][/B][/FONT][/COLOR][/B]