Trigger (Tetikleyici) ve Türleri

Trigger Nedir?

Trigger yani tetikleyici, sunucu üzerinde herhangi bir işlem gerçekleştiğinde başka bir işlem in gerçekleşmesi istendiğinde kullanılır. Örneğin bir kayıt silmek istediğinizde trigger sayesinde kayıt silinemeyeceğini bildirebilirsiniz.

Trigger işlem gerçekleşmiş gibi çalışarakda çalışabilir böylece değişikliklerden etkilenme ortadan kalkabilir. Gerçekleşen işlemler transaction olarak ele alınır ve işlemlerin geri alınmasını ROLLBACK ifadesi ile sağlanabilir.

Trigger Türleri

DDL(Data Definition Language) Trigger

Create, Alter ve DROP ifadeleri kullanıldığında devreye giren trigger türüdür. SQL ifadesi gerçekleştikten sonra devreye girer. İşlemin geri alınması için ROLLBACK ile işlem geri alınabilir.

ALL SERVER: Tüm sunucu üzerinde gerçekleştirilen işlemlere karşı duyarlı

DATABASE: Sadece aktif veritabanında  yapılan değişimlere karşı duyarlı.

Yukarıda TRIGGER oluşturduk. Oluşturduğumuz trigger drop ve alter işlemi veritabanı üzerinde çalıştığında BEGIN içersinde yazan mesajı ekrana yazdıracak.

t-sql-trigger-ddl-drop-mesaj

Yukarıda öğrenci tablosu silindiğinde oluşturduğumuz trigger devreye girerek bize mesaj veriyor.

Logon Trigger

SQL Server’a giriş başarılı olduktan sonra devreye giren tetikleyicidirler. Başarısız olduğunda devreye girmezler.

Yukarıda kullanım şekline baktığımızda sadece ALL SERVER yani sunucu üzerinde işlem yapıldığında devreye giren trigger olduğunu farkediyoruz.

Yukarıda ki kodlarda ORIGINAL_LOGIN() fonksiyonu ile admin kullanıcısının giriş yapıp yapmadığını ve sys.dm_exec_sessions tablosundan admin kullanıcının oturum sayısının 3 den fazla olup olmadığını kontrol etmektedir. Eğer 3den fazlaysa ROLLBACK ile yapılan işlem geri alınacaktır.

DML (Data Manipulation Language) Trigger

INSERT, UPDATE ve DELETE işlemleri gerçekleştirildiğinde devreye giren triggerlardır. After ve Instead Of türünde DML tetikleyiciler vardır.

After Trigger: İşlem gerçekleştikten sonra devreye giren tetikleyicilerdir. Sadece tablolarda kullanılır.

Instead Of Trigger: İşlem gerçekleşeceği sırada kullanılır. Daha çok kontrol amaçlı kullanılırlar. Hem tablo hem view de kullanılırlar.

Yukarıda FOR ve AFTER ifadeleri aynı görevi yapmaktadır. FOR sadece INSERT işleminde devreye girer. AFTER ise INSERT ve DELETE işleminde devreye girer.

Yukarıda ki örnekte OGRENCİ tablosunda INSERT işlemi için geçerli olan trigger örneğidir. OGRENCI_ID sütünuna eklenen kayıt @OGRENCI_ID değişkenine gönderilir. Daha sonra SELECT işlemi ile OGRENCI_ID değeri tabloda olup olmadığı kontrol edilir. Eğer tabloda varsa trigger devreye girecektir.

t-sql-trigger-dml-select

t-sql-trigger-dml-insert

Yukarıda ki örneklerde ilk olarak öğrenci tablosunda ki tüm kayıtları ekrana getirdik. OGRENCI_ID değeri 1 varken yeniden OGRENCI_ID değeri 1 olan MEHMET TOPAL değerlerine sahip kayıt ekleme işlemi gerçekleştirmesi sırasında ‘Aynı numaraya sahip öğrenci zaten var.’ uyarısını alarak işlem gerçekleşmeyerek ROLLBACK oldu.


Yazılıma olan tutkusu için Trakya Üniversitesi - Bilgisayar Teknolojisi ve Bilişim Sistemleri öğrencisi, bölüm temsilcisi ve Keşan Yusuf Çapraz Uygulamalı Bilimler Yüksekokulu okul temsilcisi olarak öğrenimini 2016'da tamamladı. Junior Java Developer olarak aktif iş hayatına devam etmektedir.

Yazıyı Paylaş

Related Articles

Yorum Yaz

© 2019 Onur Arslan. Tüm Hakları Saklıdır. · RSS Yazıları · RSS Yorumları