Not:Syntax i dml trigger lar ile aynıdır.Bu yüzden tekrardan incelemeye almayacağım.Dml trigger ları anlattığım makaleden syntax i hakkında bilgi edinebilirsiniz.
İlk senaryomuz server üzerinde herhangi bir tabloyu herhangi bir şekilde değiştirme işlemini engelleyen bir trigger oluşturmak olsun arkadaşlar.
create trigger TabloDuzenlemeEngeli
on database
for
Alter_Table
as
raiserror('Tablo düzenleme engeli',16,1)
rollback
Yuarıdaki gibi bir trigger oluşturduğumuzda triggerımızın bulunduğu server üzerindeki tabloların yapısında değişiklik yapılmasını engellemiş oluruz arkadaşlar.Bu trigger da kullandığım 2 tane sql komutu vardır.Raiserror ile hata fırlatma işlemi yapabiliriz.İstediği parametreler sırası ile hata mesajı,severity değeri ve state değeridir.Rollback ise trigger tetiklenmeden önce yapılan işlemleri geri almak için kullanılır.Transaction konusunda detaylı olarak anlatacağım.Şuan üzerinde durmuyorum.
Diğer bir senaryomuz ise database oluşturma engeli vermek olsun.Bunun için de ,
create trigger VeriTabaniOlusturmaEngeli
on all server
for
CREATE_DATABASE
as
raiserror ('Adam ol la',16,1)
rollback
Diğer bir senaryomuz ise database silme engeli vermek olsun.Bunun için de ,
create trigger VeriTabaniSilmeEngeli
on all server
for Drop_DATABASE
as
raiserror ('Adam ol la',16,1)
rollback
Gibi bir çok senaryo kurabiliriz arkadaşlar.Temel olarak anlaşılması gereken önemli nokta tüm database nesneleri üzerinde ddl sorguları çalıştırıldığında yani drop,create ve alter işlemi yapıldığında ddl triggerların tetiklenip içerisinde belirttiğimiz kodları işlemesidir.Diğer tüm özellikleri dml triggerlar ile aynıdır.
Umarım faydalı olmuştur arkadaşlar.Bir sonraki makalemde görüşmek dileğiyle ...
Hiç yorum yok:
Yorum Gönder