msHOWTO

30 Nisan 2012 Pazartesi

T-Sql Trigger 2 - DDL Trigger

Merhaba arkadaşlar.Trigger konumuzun 2.partında Ddl Trigger ları anlatacağım.Önceki partta Dml trigger ları anlatmıştım.Ddl Trigger lar tanımlandığı sql server üzerinde çalıştırılan Ddl sorguları ile tetiklenen triggerlardır.Database oluşumundan tutun da view düzenlemesine kadar dml sorguların etki ettiği tüm database nesneleri üzerinden tetiklenebilirler.Farklı senaryolar ile ddl triggerların oluşturulmasını inceleyeceğiz arkadaşlar.

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