İçeriğe atla

Trigger

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 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­­:

  1. Satır düzeyi tetikleyici (mesela Sybase)
  2. 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.[1]

Kaynakça

  1. ^ Fahrettin Aksakal. "Trigger, Stored Procedure Kullanımı ve Referential Integrity". 2 Nisan 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 24 Temmuz 2011. 

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">MySQL</span>

MySQL, altı milyondan fazla sistemde yüklü bulunan çoklu iş parçacıklı, çok kullanıcılı, hızlı ve sağlam bir veri tabanı yönetim sistemidir.

<span class="mw-page-title-main">C (programlama dili)</span> programlama dili

C, yapısal bir programlama dilidir. Bell Laboratuvarları'nda, Ken Thompson ve Dennis Ritchie tarafından UNIX işletim sistemini geliştirebilmek amacıyla B dilinden türetilmiştir. Geliştirilme tarihi 1972 olmasına rağmen yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından yayımlanan "C Programlama Dili" kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin yapımında %95'lere varan oranda kullanılmış, hâlen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken her yerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır. Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen C++ diline geçmişlerdir.

<span class="mw-page-title-main">DNS</span>

DNS, internet uzayını bölümlemeye, bölümleri adlandırmaya ve bölümler arası iletişimi organize etmeye yarayan, bilgisayar, servis, internet veya özel bir ağa bağlı herhangi bir kaynak için hiyerarşik dağıtılmış bir adlandırma sistemidir.

<span class="mw-page-title-main">İnternet iletişim kuralları dizisi</span>

İnternet protokol takımı, bilgisayarlar ve ağ cihazları arasında iletişimi sağlamak amacıyla standart olarak kabul edilmiş kurallar dizisidir. Bu kurallar dizisi temel olarak verinin ağ üzerinden ne şekilde paketleneceğini ve iletilen veride hata olup olmadığının nasıl denetleneceğini belirlemektedir.

SQL, verileri yönetmek ve tasarlamak için kullanılan bir dildir. SQL, kendi bir programlama dili olmamasına rağmen birçok kişi tarafından programlama dili olarak bilinir. SQL herhangi bir veri tabanı ortamında kullanılan bir alt dildir. SQL ile yalnızca veri tabanı üzerinde işlem yapılabilir; veritabanlarında bulunan sistemlere bilgi ekleme, bilgi değiştirme, bilgi çıkarma ve bilgi sorgulama için kullanılmaktadır. Özellikle de ilişkisel veritabanı sistemleri üzerinde yoğun olarak kullanılmaktadır. SQL'e özgü cümleler kullanarak veri tabanına kayıt eklenebilir, olan kayıtlar değiştirilebilir, silinebilir ve bu kayıtlardan listeler oluşturulabilir.

ABAP,İngilizce Advanced Business Application Programming kelimelerinin baş harflerinden oluşan bir kısaltmadır ve Alman yazılım şirketi SAP tarafından geliştirilen üst seviye bir nesne tabanlı programlama dilidir. SAP'nin iş uygulamaları geliştirmek için kullanılan NetWeaver platformunun parçası olan Web Uygulama Sunucusu'nu programlamak amacıyla kullanılır. Sözdizimi COBOL'a benzemektedir.

Kaydedilmiş işlev, veritabanı yönetim sistemlerinde veritabanı istemcisinden tüm komut dizilerini çağırmak için kullanılabilen bir komuttur. Bu nedenle, bir dizi kayıtlı komutu çalıştıran bağımsız bir komuttur. Kaydedilmiş işlevler, ilgili veritabanının veri sözlüğüne kaydedilir.

Veri tutarlılığı, veritabanı sistemlerinde verilerin mantıksal tutarlılık kavramını ifade eder. Bu diğer tablolardaki kayıtlar ile ilgili bir tutarlılık olabileceği gibi aynı tablodaki farklı sütunlar arasındaki tutarlılıktan da bahsedilebilinir.

MyISAM, MySQL ilişkisel veri tabanı yönetim sisteminin kullandığı ön tanımlı kayıt motorudur. Öncülü ISAM kodu temel alınarak geliştirilen MyISAM birçok yararlı özelliğe sahiptir. Ne var ki, MySQL'in son sürümleri aktarım ve veri tutarlılığı kısıtlamaları desteği sunan ve yüksek eşgüdüm öngören InnoDB'yi yeğlemektedir.

İnternet Protokolü Güvenliği (IPsec), Internet Protokolü (IP) kullanılarak sağlanan iletişimlerde her paket için doğrulama ve şifreleme kullanarak koruma sağlayan bir protokol paketidir. IPsec, içinde bulundurduğu protokoller sayesinde, oturum başlarken karşılıklı doğrulama ve oturum sırasında anahtar değişimlerini gerçekleştirme yetkisine sahiptir. İki bilgisayar arasında (host-to-host), iki güvenlik kapısı arasında(network-to-network), bir güvenlik kapısı ve bir bilgisayar arasında(network-to-host) sağlanan bağlantıdaki veri akışını korumak için kullanılır. IPsec kriptografik güvenlik servislerini kullanarak IP protokolü ile gerçekleştirilen bağlantıları korumak için kullanılır. Ağ seviyesinde doğrulama veri kaynağı doğrulama,veri bütünlüğü, şifreleme ve replay saldırılarına karşı koruma görevlerini üstlenir.

Döngü açma, programın çalışmasını hızlandıran döngü dönüştürme yöntemlerinden biridir. Bu yöntem yazılan programın kod satır sayısını artırmaktadır. Döngülerdeki dönüşüm manuel olarak programcı tarafından yapılabileceği gibi kodlar derleyiciler tarafından da düzenlenebilmektedir.

Gen Ontolojisi ya da GO, gen ve gen ürünü vasıflarının bütün türler kapsamında temsilini birleştirmek için büyük bir biyoenformatik girişimidir. Proje özellikle şunları hedeflemektedir:

  1. Gen ve gen ürünü vasıflarına dair sahip olduğu denetli söz dağarcığının sürdürülmesi ve geliştirilmesi;
  2. Gen ve gen ürünlerinin notlaması, not verilerinin özümsenmesi ve dağıtılması;
  3. Projenin sağladığı verinin bütün boyutlarına kolayca erişilmesi için ve deneysel verilerin GO kullanarak işlevsel yorumlanabilmesi için araçlar sağlanması.

Yazılım alanında, SQL programlama araçları veritabanı yöneticileri (DBA) ve uygulama geliştiricileri için platformlar verimli ve doğru günlük görevlerini yerine getirmek için sağlar.

Web kazıma, web sitelerinden bilgi çıkartmanın bilgisayar programı tekniğidir. Çoğunlukla, bu tür yazılım programları düşük seviye Köprü Metni Aktarım Protokolü (HTTP) veya Mozilla Firefox gibi tam teşekküllü gömülü web tarayıcısı tarafından World Wide Web'in insan araştırmaları simüle edilir.

<span class="mw-page-title-main">Blok zinciri</span> sanal para aktarımlarının dağıtık olarak depolandığı veritabanı

Blok zinciri, blokzincir ya da özgün İngilizce tabiriyle blockchain, kriptografi kullanılarak bağlanan ve güvenli hale getirilen, bloklar adı verilen, sürekli büyüyen bir kayıt listesidir.

İlişkisel veritabanı, 1970 yılında Edgar Frank Codd tarafından önerildiği gibi, organizasyonu ilişkisel veri modeline dayanan bir dijital veritabanıdır. İlişkisel veritabanlarını korumak için kullanılan çeşitli yazılım sistemleri bir ilişkisel veritabanı yönetim sistemi (RDBMS) olarak bilinir. Neredeyse tüm ilişkisel veritabanı sistemleri, sorgulama ve veritabanının bakımı için dil olarak SQL(Structured Query Language) kullanmaktadırlar.

<span class="mw-page-title-main">HeidiSQL</span>

HeidiSQL; MySQL'in yanı sıra Microsoft SQL Server ve PostgreSQL için ücretsiz ve açık kaynaklı bir istemcidir. Kullanıcılar HeidiSQL ile veritabanlarını yönetmek için, bir oturum oluşturarak kabul edilebilir kimlik bilgileri olan bir yerel veya uzak MySQL sunucusuna giriş yapmalıdır. Bu oturumda kullanıcılar MySQL veritabanlarını bağlı MySQL sunucusu içinde yönetebilir ve bittiğinde sunucudan bağlantısını kesebilir. Özellik kümesi, en yaygın ve gelişmiş veritabanı, tablo ve veri kaydı işlemleri için yeterlidir, ancak bir SQL veritabanı önündeki tam işlevselliğe doğru aktif olarak gelişmeye devam etmektedir.

Veritabanı güvenliği, çok çeşitli bilgi güvenliği kontrollerinin kullanımı ile ilgilidir ve veri tabanlarınının(imkân dahilinde verileri, veritabanı uygulamalarını veya kayıt edilmiş işlevleri, veri tabanı sistemlerini, veritabanı sunucularını ve ilişkili ağ bağlantılarını içerir.) gizliliğini, bütünlüğünü ve erişilebilirliğini saldırılara karşı korur. Teknik, idari, yargı ve fiziksel gibi çeşitli türde ve kategoride kontroller veritabanı güvenliği kapsamı içerisine girer. bilgisayar güvenliği, bilgi güvenliği ve risk yönetimi alanları içerisinde, veritabanı güvenliği uzmanlık gerektiren bir konudur.

<span class="mw-page-title-main">Gerçek rassal sayı üreteci</span>

Programlama alanında kullanılan donanım rassal sayı üreteci bilgisayar programı kullanmayarak, fiziksel bir işleyiş ile rassal sayı üretimi için kullanılır. Bu tip cihazlar genel olarak mikroskobik olay tabanlı, istatistiksel olarak rassal gürültü sinyalleri içeren; ısıl gürültü, fotoelektrik etkisi kullanan hüzme bölücü ve diğer kuantum etkisi içeren olayları kullanır. Bu stokastik süreçler, teoride önceden kestirilemez ve teorinin öne sürdüğü sava göre deneysel test sonuçlarına tabiidir. Bir donanım rassal sayı üreteci genel olarak bir tip fiziksel bir gücü elektrik sinyaline dönüştürmek için güç çevirici, rassal dalgalanma genliklerini ölçülebilir seviyelere getirebilmek için güç yükselteç ve diğer elektrik devreleri ve de çıkışı sayısal bir veriye dönüştürebilmek için bir çeşit analog sayısal çevirici içerir. Genel olarak elde edilen sayı ikili sayı sisteminin elemanları olan 0 veya 1 dir. Arka arkaya alınan rassal değişen sayı örnekleri sayesinde sıralı olarak rassal sayılar elde edilir.

Bir pivot tablo, daha geniş bir tabloyu özetleyen istatistik tablosudur. Bu özet, pivot tabloyu anlamlı bir şekilde gruplayan toplamları, ortalamaları veya diğer istatistikleri içerebilir.