Bu madde, uygun değildir.Eylül 2012) ( |
Trigger yani tetikleyici, ilişkisel veri tabanı yönetim sistemlerinde bir tabloda belirli olaylar meydana geldiği zaman yani ekleme, güncelleme, silme işlemlerinden biri gerçekleşmeden önce veya sonra çalışan ve belirli işlemleri kodlandığı şekilde yerine getiren yordamdır.
Tetikler, veritabanında yapılan değişikliklerle birlikte otomatik olarak çalışan prosedürel program parçacıklarıdır. Bu yüzden iş mantığının tetiklerin içinde gerçeklenmesi, istenmeyen bir durumdur. Hatta tetiklerin profesyonel olmayan kişiler tarafından kullanılması genellikle tavsiye edilmez.
Ancak ilişkisel veritabanlarında performansı artırıcı etkisi nedeniyle olmazsa olmaz yordamlardır.
- Soru Tetikleyici nasıl bir performans artışı sağlıyor?
- Cevap Bilâkis tetikleyici performans kaybı demektir. Fakat faydalarına ve sağladıklarına istinaden kaybedilen performansa razı olunur. Mesela birbirinin aynısı iki tablodan birinde tetikleyici kodları olup diğerinde olmaması durumunda her iki tabloya da toplu insert yapıldığında tetikleyici olan tabloda insert işleminin daha uzun süreceği görülebilir. Fakat işin sorgulama tarafında tetikleyicilerin olumlu ya da olumsuz bir katkısı yoktur. Gerek veri bütünlüğünü sağlamada, gerek bir takım işlemlerin otomatik yaptırılmasında tetikleyici yapılarından faydalanılır.
Tetikleyici nedir?
Bir tablo üzerinde belirli bir olaya bağlı olarak tetiklenip çalışan SQL kodlarıdır. Tablo üzerindeki tetikleyicileri (triggerleri) tetikleyen olaylar delete, insert ve update olaylarıdır. Bu olaylara istinâden üç ana tip tetikleyiciden bahsedilir. Bunlar insert tetikleyicisi, delete tetikleyicisi şeklindedir. Bir tablo üzerinde bu olayların öncesinde ve sonrasında tetiklenecek istenildiği kadar tetikleyici yazılabilir. Fakat genel eğilim ve kullanım, her bir olay için tek bir tetikleyici kullanmak şeklindedir. Örneğin stok hareketleri sonucunda stok miktarlarının azalması veya artması işlemlerinin veya tahakkuk ve tahsilatlar sonucu carî hesapların etkilenmesi işlemlerinin tetikleyiciler aracılığı ile yapılmaları, tipik bir tetikleyici kullanım yeridir. Ayrıca referential integrity’yi sağlamak amacı ile de tetikleyici kullanımı çok tercih edilir. İlişkisel bir veritabanında örneğin PERSONEL tablosundaki kişinin bölüm bilgisi amaçlı olarak BOLUM_NO tutulması ve bölümün adının da BOLUM tablosundan bulunması yapıldığını düşünelim. Eğer 1 numaralı bölüm herhangi bir personele kullanıldıysa BOLUM tablosundan BOLUM_NO değeri 1 olan kaydın kesinlikle silinememesi gerekmektedir. Bu tür kontrollerin yapılarak veri bütünlüğünün korunmasına İngilizcede referential integrity denir. Bu amaçla yazılan veya bir veritabanı tasarım aracı kullanıldıysa onun otomatik olarak yazdığı tetikleyici kodları sayesinde bu bütünlük korunur. Çünkü BOLUM tablosunun delete tetikleyicisi’nde gerekli kontrolleri yapacak kod yazılır ve silinmek istenen BOLUM_NO herhangi bir personel için kullanıldıysa bu silme işlemine izin verilmez.
İki tip tetikleyici vardır:
- Satır düzeyi tetikleyici (mesela Sybase)
- Statement level tetikleyici (mesela MS SQL)
Satır düzeyi tetikleyici mantığında yazılan tetikleyici kodları, o an işleme tâbî olan bütün satırlar için veritabanı tarafından ayrı ayrı çalıştırılır. Yani misal 100 adet kaydı yeniliyorsak update tetikliyicimiz arka arkaya her satır için bir defa olmak üzere toplam 100 defa çalışır.
Statement level tetikleyici ise her statement için bir defa çalışır. Yani ister bir adet, ister 100 adet kaydı yeniliyor olun, yazdığınız tetikleyici kodu sadece bir defa çalışacaktır. Dolayısıyla yenilenen 100 kayıt için de yapılması gereken ayrı ayrı işlemler varsa bu işlemler tetikleyici içinde bir döngü marifetiyle yapılmalıdır.
Kaynakça
- ^ Fahrettin Aksakal. . 2 Nisan 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 24 Temmuz 2011.
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
Bu madde Vikipedi bicem el kitabina uygun degildir Maddeyi Vikipedi standartlarina uygun bicimde duzenleyerek Vikipedi ye katkida bulunabilirsiniz Gerekli duzenleme yapilmadan bu sablon kaldirilmamalidir Eylul 2012 Trigger yani tetikleyici iliskisel veri tabani yonetim sistemlerinde bir tabloda belirli olaylar meydana geldigi zaman yani ekleme guncelleme silme islemlerinden biri gerceklesmeden once veya sonra calisan ve belirli islemleri kodlandigi sekilde yerine getiren yordamdir Tetikler veritabaninda yapilan degisikliklerle birlikte otomatik olarak calisan prosedurel program parcaciklaridir Bu yuzden is mantiginin tetiklerin icinde gerceklenmesi istenmeyen bir durumdur Hatta tetiklerin profesyonel olmayan kisiler tarafindan kullanilmasi genellikle tavsiye edilmez Ancak iliskisel veritabanlarinda performansi artirici etkisi nedeniyle olmazsa olmaz yordamlardir Soru Tetikleyici nasil bir performans artisi sagliyor Cevap Bilakis tetikleyici performans kaybi demektir Fakat faydalarina ve sagladiklarina istinaden kaybedilen performansa razi olunur Mesela birbirinin aynisi iki tablodan birinde tetikleyici kodlari olup digerinde olmamasi durumunda her iki tabloya da toplu insert yapildiginda tetikleyici olan tabloda insert isleminin daha uzun surecegi gorulebilir Fakat isin sorgulama tarafinda tetikleyicilerin olumlu ya da olumsuz bir katkisi yoktur Gerek veri butunlugunu saglamada gerek bir takim islemlerin otomatik yaptirilmasinda tetikleyici yapilarindan faydalanilir Tetikleyici nedir Bir tablo uzerinde belirli bir olaya bagli olarak tetiklenip calisan SQL kodlaridir Tablo uzerindeki tetikleyicileri triggerleri tetikleyen olaylar delete insert ve update olaylaridir Bu olaylara istinaden uc ana tip tetikleyiciden bahsedilir Bunlar insert tetikleyicisi delete tetikleyicisi seklindedir Bir tablo uzerinde bu olaylarin oncesinde ve sonrasinda tetiklenecek istenildigi kadar tetikleyici yazilabilir Fakat genel egilim ve kullanim her bir olay icin tek bir tetikleyici kullanmak seklindedir Ornegin stok hareketleri sonucunda stok miktarlarinin azalmasi veya artmasi islemlerinin veya tahakkuk ve tahsilatlar sonucu cari hesaplarin etkilenmesi islemlerinin tetikleyiciler araciligi ile yapilmalari tipik bir tetikleyici kullanim yeridir Ayrica referential integrity yi saglamak amaci ile de tetikleyici kullanimi cok tercih edilir Iliskisel bir veritabaninda ornegin PERSONEL tablosundaki kisinin bolum bilgisi amacli olarak BOLUM NO tutulmasi ve bolumun adinin da BOLUM tablosundan bulunmasi yapildigini dusunelim Eger 1 numarali bolum herhangi bir personele kullanildiysa BOLUM tablosundan BOLUM NO degeri 1 olan kaydin kesinlikle silinememesi gerekmektedir Bu tur kontrollerin yapilarak veri butunlugunun korunmasina Ingilizcede referential integrity denir Bu amacla yazilan veya bir veritabani tasarim araci kullanildiysa onun otomatik olarak yazdigi tetikleyici kodlari sayesinde bu butunluk korunur Cunku BOLUM tablosunun delete tetikleyicisi nde gerekli kontrolleri yapacak kod yazilir ve silinmek istenen BOLUM NO herhangi bir personel icin kullanildiysa bu silme islemine izin verilmez Iki tip tetikleyici vardir Satir duzeyi tetikleyici mesela Sybase Statement level tetikleyici mesela MS SQL Satir duzeyi tetikleyici mantiginda yazilan tetikleyici kodlari o an isleme tabi olan butun satirlar icin veritabani tarafindan ayri ayri calistirilir Yani misal 100 adet kaydi yeniliyorsak update tetikliyicimiz arka arkaya her satir icin bir defa olmak uzere toplam 100 defa calisir Statement level tetikleyici ise her statement icin bir defa calisir Yani ister bir adet ister 100 adet kaydi yeniliyor olun yazdiginiz tetikleyici kodu sadece bir defa calisacaktir Dolayisiyla yenilenen 100 kayit icin de yapilmasi gereken ayri ayri islemler varsa bu islemler tetikleyici icinde bir dongu marifetiyle yapilmalidir Kaynakca Fahrettin Aksakal 2 Nisan 2016 tarihinde kaynagindan arsivlendi Erisim tarihi 24 Temmuz 2011