12-SQL DERSLERİ – TRİGGER

161
görünümler

Trigger lar performans açısından çok iyi değildirler. Trigger tetikleyici anlamındadır.

Bu ne demek?

Örneğin bir yere kayıt attığınız zaman diğer tabloda bundan etkileniyorsa veya etkilemek istiyorsanız bunu TRIGGER sayesinde etkileyebilirsiniz.

Şimdi örneğe geçelim.

trigerTRIGGER oluşturmak için her zaman ki gibi CREATE komutunu kullanıyoruz. Ve ismini veriyoruz. İsimde ki TGR yazısı TRIGER olduğu belli olsun diye yazdım. Sizde bu şekilde yapabilirsiniz. TRIGGER ın hangi tablo üzerinde çalıştığını görmek için ON  ve ardından tablo adını yazıyoruz. Hangi işlemden sonra yapacağımızı belirtmek içinde AFTER INSERT yazdık.

Biz bu örnekte yeni bir kayıt eklendiği zaman uyarılmak istendiğimiz için bu şekilde yaptık. BEGIN END blogu içinde değişkenimizi tanımladık. Ardından bir tane SELECT yazıp değişkenimizi aldık.

FROM INSERTED kısmı ne demek? Bunu açıklayalım.

Aslında burada FROM dan sonra tablo adımızı düşünebilirsiniz. INSERTED ise en son eklenen kayıtı al demek. Bunun DELETED versiyonuda vardır. Bir sonraki örnekte bunu yapıcaz. INSERT INTO ile yeni bir kayıt ekledik ve TRIGGER ımızı çalıştırdık. TRIGGER lara Tabloların altındaki klasörlerde TRIGGERS adlı klasörden erişebilirsiniz. TRIGGER ımızı oluşturduğumuza göre şimdi yeni bir kayıt ekleyelim ve TRIGGER ımız aktif hale gelsin.trigger2Yukarıda TRIGER ımızı oluşturduğumuz tabloların ilk değerlerini SELECT ile getirdik. Ardından aşağıdaki örnekte DimProductCategory tablomuza yeni bir kayıt ekledik.

trigger3Normalde bir tabloya yeni bir kayıt eklediğimizde sadece 1 tane(1 row(s) affected) yazısı çıkardı. Ancak burada 2 tane çıktı. Bunun sebebi işte TRIGGER dır. Çünkü biz yeni bir kayıt eklendiği zaman TRIGGER tetiklendi ve 1 tane daha (1 row(s) affected) yazısı geldi.trigger4TRIGGER tetiklendikten sonra tekrardan tablolara SELECT attık ve yeni kayıtımızın eklendiği görüyoruz.

TRIGGER piyasada çok mu kullanılır diye sorabilirsiniz?

Pek kullanılmaz ama çoğu yerde kullanılmaya müsait bir yapı. Mesela neyle kullanıyorlar. İş zekası kısmında ,şöyle düşünün bir tablo var ,size yetki olarak mesela sizin tabloyu truncate etmenizi istemiyorlar. Bi bakarlar siz eğer truncate komutunu gönderdiğiniz zaman o Tablo adı silinebilir tablolar listesinde mi? Eğer listesinde ise silebilirsiniz. O sırada bir TRIGGER çalışır ve listesinde değilse silemezsiniz. Veya yukardaki örnekte yaptığımız şekillerde kullanıyor.

Şimdi TRIGGER ımızın bir de silme işlemini yapalım.

trigger5TRIGGER ımızı oluşturduk. Şimdi tablomuzdan en son eklediğimiz kaydı silme işlemini yapalım.trigger7Silme işleminden sonra yine TRIGGER ımız tetiklendi , bunu 2  tane  (1 row(s) affected)yazısı çıkmasından da anlıyorduk. Tekrardan tablolarımıza SELECT attığımız zaman en son eklediğimiz kaydın silindiğini görürüz.trigger8

Sql Derslerimizin bu sonuncusuydu. Bunun dışında daha detaylı konularda var. O detayları daha sonra bir proje yaparak onun üstünde işlemeyi düşünüyorum. Umarım faydalı bir ders olmuştur. Sonraki derslerde görüşmek üzere.

1 Yorum

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz