One Dups Bilgisayar Programlamaya dair Her şeyi bulabileceğiniz , Özgün konulu bir sitedir.

Son Konular

Post Top Ad

Your Ad Spot

13 Ara 2017

SQL Trigger (Tetikleyici) Kullanımı

Trigger, kelime anlamı olarak tetikleyici demektir. SQL Server'da kullanılma amacı, bir işlem yapıldığında farklı bir işlem daha yapılmasını istiyorsak tetikleyici kullanmamız gerekir. 

Şöyle bir örnek verelim, bir tabloyu sildiğinizi düşünün ama o tablonun silinmemesini, uyarı mesajı verilmesini istiyorsunuz. Tabloyu "sildiğiniz anda" uyarı mesajı verebilir, buradaki tetikleyici olay tabloyu silmek oldu. Yani tetikleyici hangi tablonun üzerindeyse o tablo üzerinde çalışır. 

Kısacası veri tabanında ki yapılan işlemlerin loglarını tutmamıza yardımcı olur.

Bir Trigger Oluşturmak için ;


    CREATE TRIGGER Trigger'a verilecek isim 
     ON Etkilenmesini istediğimiz alan
     Tetikleyici türü (After/Instead Of/FOR) Komut (insert,update,delte)
     AS
     SQL_ifadeleri(Prosedür)


Tetikleyici Mesajlarını tutabilmemiz için bir tabloya ihtiyacımız vardır;


    CREATE TABLE TetikMesaj
      (
          MesajNo int IDENTITY(1,1) primary key, 
          TetikAdı varchar(30),
          Mesaj varchar(250),
          Tarih datetime default getdate() 
      )
Yukarıdaki Komutu Çalıştıktan sonra Tablonun oluşup oluşmadığını bu komut ile kontrol edelim...     SELECT * FROM TetikMesaj 
Tetikleyici kayıtlarının tutulduğu tablo hazır olduğuna göre  bir tetikleyici hazırlayalım;

Yapacağımız işlemde Çalışanlar tablosuna bir veri eklenince bize bir log çıkarsın...

    CREATE TRIGGER YeniKayit
     ON Çalışanlar
     AFTER INSERT
     AS
     INSERT INTO TetikMesaj(TetikAdı,Mesaj )
     VALUES('YeniKayit','Çalışanlar Tablosuna bir kayıt eklendi')
     GO



Bu İşlemlerde Trigger Tetiklenmez!!!! 


     UPDATE Çalışanlar
     SET Soyadı='Doğan'
     WHERE ÇalışanNo=1
     -- tetiklemez,

     DELETE FROM Çalışanlar WHERE Adı ='Adalet'
     -- tetiklemez


Bu İşlemde Trigger Tetiklenir!!!
 INSERT INTO Çalışanlar(ÇalışanNo,Adı,Soyadı)
VALUES(20,'One','Dups')

Bir Tetikleyiciyi etkisiz hale getirebilmek için ;


     DISABLE TRIGGER TetikleyiciAdı ON TabloAdı 


Trigger'ı Etkinleştirmek için ;


     ENABLE TRIGGER tetikleyiciAdı ON TabloAdı

  
Bir Trigger'ı Silmek İçin;


     DROP Trigger TetikleyiciAdı

  
Bir Tetikleyiciyi Değiştirmemiz için ALTER Komutunu Kullanmalıyız
Alter Komutundan sonra tetikleyiciyi en baştan yazmalıyız


     ALTER TRIGGER YeniKayit
     ON Çalışanlar
     AFTER INSERT
     AS
     INSERT INTO TetikMesaj(TetikAdı,Mesaj )
     VALUES('YeniKayit','Çalışanlar Tablosuna bir kayıt eklendi')
     GO



Güvenlik Amacıyla da TRİGGER Kullanılır...
Veri tabanında ki tüm kayıtları silmeye çalışıldığında bir mesaj göndermesini sağlayan bir TRİGGER oluşturalım;


     CREATE TRIGGER silmeIslemi
     ON Müşteriler
     INSTEAD OF DELETE
     AS
     INSERT INTO TetikMesaj(TetikAdı,Mesaj)
     VALUES('silmeIslemi','Müşteri bilgileri silinmeye çalışılıyor')


DELETE FROM Müşteriler
Tüm İşlemleri Yaptıktan Sonra müşterileri Silmeye Çalıştığımız da Silindi Olarak Gözükecek Fakat Müşteriler Tablosundan herhangi bir veri silinmeyecektir....

Hiç yorum yok:

Yorum Gönderme

Sayfalar