1. Ana Sayfa
  2. SQL Server
  3. SQL Server Trigger (Tetikleyici) Nedir? Nasıl Oluşturulur?
k_zd_m_

SQL Server Trigger (Tetikleyici) Nedir? Nasıl Oluşturulur?

sqlserver
Ruijie Teknoloji Günü

Bu makalemde triggerın işlevinden, neden kullandığımızdan, trigger türlerinden bahsedip bir örnek üzerinden açıklamaya çalışacağım.

SQL Server’da triggerlar, veri tabanı nesnesine, veri tabanına ve sunucu olaylarına yanıt oluşturup otomatik olarak yürütülen özel bir stored procedure diyebiliriz(Saklı yordam). Stored Procedureden farklı olarak triggerlar kullanıcılar tarafından tetiklenemez. Yapılan değişiklikleri loglayıp kontrol altında tutmamıza, kritik veri tabanı ya da tablolarda işlem yapılmamasını istiyorsak bunu engellemeye ve başarılı olarak açılan oturumları da kayıt altına alıp yetkilerini gözden geçirebilmemize yardımcı olur.

SQL Server tetikleyicileri inceleyelim:

  • DML(Data Manipulation Language/Veri İşleme Dili) Triggers

    Tablolarda gerçekleşen INSERT, UPDATE ve DELETE işlemlerine karşı otomatik olarak çağrılan triggerlardır. DML triggerlar After/For Trigger ve Instead Of Trigger olarak ayrılır.

    After/For Trigger: Veri tabanında yapılan DML işlemlerinin tamamlanmasından sonra tetiklenir.

    Instead Of Trigger: DML işlemi gerçekleşmeden önce ne yapılması gerektiğini belirttiğimiz triggerlardır.

  • DDL(Data Definition Language/ Veri Tanımlama Dili) Triggers

    Veri tabanında gerçekleşen CREATE, ALTER ve DROP işlemlerine karşı otomatik olarak tetiklenir.

  • Logon Triggers

    Başarılı oturum açma durumlarında tetiklenir.

Trigger Oluşturma Söz Dizimi

Kısaca bu şekilde triggerlarımızı create edebiliriz.

DML Triggers

DDL Triggers

Logon Triggers

Şimdi bir DML Triggerı nasıl oluşturulur örnek üzerinden görelim.

Önce DML işlemleri yapıldığında bunların detayını yazacak bir tabloyu ilgili veri tabanında CREATE ediyoruz.

Daha sonra tablo içerisindeki kolonlara default değerlerini atıyoruz.

DML komutları için [dbo].[Customer] tablosunda triggerımızı oluşturuyoruz. Eğer bu tabloda DML işlemlerini engellemek isteseydik ROLLBACK TRANSACTION diyebilirdik.

Oluşturduğumuz tabloyu ve [dbo].[Customer] tablosu üzerinde yapılacak DML işlemleri için triggerımızı gözlemliyoruz. 

Resim-1

Birkaç DML işlemleri uygulayıp triggerımızı test edelim.

Scriptlerimizi çalıştırdıktan sonra oluşturduğumuz [dbo].[EVENT_LOG] tablosunu inceleyelim.

Sorgu sonucunda uygulamış olduğumuz DML işlemlerinin detaylarının [dbo].[EVENT_LOG] tablosuna yazıldığını gözlemliyoruz. Değişikliğin yapıldığı tarih, yapılan DML işlemi, değişikliği yapan kişi, değişikliğin yapıldığı uygulama ve Host name, hangi şema ve tabloya ait kayıtlarda değişiklik yapıldığı ve bu değişikliğin detaylı bilgisini bu log tablomuzda gözlemleyebiliyoruz.



Resim-2

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

https://www.mshowto.org

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql?view=sql-server-ver15

TAGs:SQL Server , SQL Server Trigger, SQL Server Trigger Oluştuma, Trigger Kullanımı,Trigger Örneği, DML Trigger, DDL Trigger, Logon Trigger, After Trigger, For Trigger, Instead of Trigger, Tetikleyici, Trigger Syntax, Update Trigger, Insert Trigger, Delete Trigger, History Log, Create Trigger

 

Ruijie Teknoloji Günü
Yorum Yap

Yazar Hakkında

Trakya Üniversitesi - Bilgisayar Mühendisliği mezunuyum. Öğrenim hayatım boyunca C, C++, C#, VB.NET ve ASP.NET MVC dilleri ile SQL Server veri tabanı altyapılı çeşitli otomasyon projelerinde yer aldım. İş hayatıma ERP Software Support Specialist pozisyonuyla başlayıp kısa bir süre sonra kariyerime BELBİM Elektronik Para ve Ödeme Hizmetleri A.Ş.'de Ms SQL Database Administrator pozisyonu ile yön vermiş bulunmaktayım. SQL Server ile birlikte Data Warehouse, Oracle ve PostgreSQL alanlarına ilgiliyim ve kendimi bu alanlarda geliştirmeye devam ediyorum.

Yorum Yap