-- MSSQL

SQL Server Tetikleyicileri

Merhabalar bu yazımda elimden geldiğince bahsedeceğim konu Trigger’lar 🙂 Genel olarak trigger yada Türkçe kullanacak olursak tetikleyiciler belirlediğimiz bir olay, bir durum meydana geldiği zaman yine bizim tarafımızdan belirlenen işlemleri yerine getiren, uygulayan bir kılavuzdur.

SQL Server’larda trigger’ı ele alacak olursak; tablolar üzerinde bir işlem gerçekleştiğinde ne yapacağımızı belirlediğimiz alanda kullanılır. Şimdi trigger türlerine bakalım.

DML (Data Manipulation Language) Trigger : INSERT, UPDATE, DELETE işlemleri sonrası devreye giren trigger’lardır.

DDL (Data Definition Language) Trigger : CREATE, ALTER, DROP işlemleri kullanıldığında devreye girer.

Logon Trigger : Login işlemleri sırasında devreye girer. Güvenlik ve kontrol amaçlı kullanılır.

Şimdi sırasıyla 3 bölümü açalım. İlk olarak DML triggerlar ile başlayabiliriz.

DML Triggerlar 2 çeşit olarak sınıflandırılmaktadır. Bunlar After Trigger ve Instead Of Triggerlardır.

After Triggerlar tablomuzda insert, update, delete işlemleri sonrasında kullanılmak içindir.

Instead of Triggerları ise insert, update, delete işlemlerini atlar ve direk tetikleyicide belirlediğimiz ifadeleri işlemeye koyar.

Yapı aşağıdaki şekilde olmalıdır.

trigger_name : tetikleyiciye vereceğimiz ad.

table_name : tetikleyicinin çalışacağı tablo adı

for , after : for yalnızca INSERT işleminde devreye girer. after  ise INSERT ve DELETE işleminde çalışır.

sql_statements: trigger sonrası işleyecek t-sql kodlarımız

Şimdi örnek yapalım ;

Bu örnekte yeni kaydolan kullanıcı eğer tabloda var ise begin kısmında belirlediğimiz trigger sonucu devreye girecektir.

DDL Trigger için yapı aşağdaki şekilde olmalıdır.

trigger name: belirleyeciğimiz tetikleyici adımız.

DATABASE | ALL SERVER : tetikleyicimizin çalışacağı database, server, tablo yada view adı.

event_type | event_group : tetikleyicimizin hangi durumlarda çalışacağını belirlediğimiz bölümdür. (INSERT, UPDATE, DELETE)

sql_statement : ve olay gerçekleştiği zaman işleme alınacak sql kodlarımız.

bu görsel sqlshack.com adresinden alınmıştır.

İlk örneğimizi yapalım, aşağıda oluşturacamız trigger alter ve drop işlemleri veritabanı üzerinde çalıştığında @message içerisinde belirlediğimiz alanı ekrana yazdıracak.

Logon Trigger Örneğimize Başlayalım. Yapı Aşağıdaki Gibi ;

Daha önceki trigger yapılarıyla aynı bir yapıya sahip. login olayına yanıt olarak begin ve end kısımları arasındaki t-sql kodlarımız çalışacaktır.

İlk örneğimizle daha kolay anlayacağız… ;

Yukarıdaki örneğimde ufuk kullanıcısını sabah 9.00 ila akşam 17.00 a kadar olan zaman aralığında login izni ile ilgili bir trigger oluşturduk. ve @Error ile ona bir uyarı gönderdik.

Yazdığım yazılar umarım işinize yarıyordur. Sağlıkla kalın…

 

sqlservertutorial

docs.microsoft

mssqltips