ASP.NET
Network Akademi

Met Hostimg

“Bilgi paylaşıldıkça artar” sloganı ile .NET Platformuna ilişkin birikimlerin paylaşıldığı ASP.NET.TR Topluluğunda sizde “YAZAR” olmak için ; info@asp.net.tr e-mail adresine kendinizi anlatan bir e-mail göndererek başvuruda bulunabilirsiniz.

SQL Trigger lar

Mahmut TEMUR
SQL
10.02.2011 10:43:42
Hit : 7986

Merhaba arkadaşlar;

ASP.NET.TR .NET Türkçe platformunda amacımız sadece bizim belirlediğimiz konularda makaleler yazmak değil sizin talep ettiğiniz veya rağbet gösterdiğiniz konular üzerinede anlatımlarda bulunmak.
Arama motorları üzerinden yoğunlukta hangi kelimelerden ziyaretçi aldığımızı kontrol ederken hatrı sayılır yoğunluğa sahip konulardan birisininde Trigger'lar olduğunu gördük. Bu nedenle bu konuya dair bir paylaşımın olması gerekliliğide bende ön plana çıktı ve istedimki bu makale konumuz Trigger'lar olsun.

Trigger : Kelime anlamı olarak tetikleyici olarak adlandırılmakta.
SQL de bir tabloda herhangi bir işlem yapıldığı anda otomatik olarak aynı tabloda veya başka bir tabloda başka işlemlerinde yapılmasını istediğimiz zamanlarda, Trigger'lar yapılmasını istediğimiz bu işlemi bizim adımıza otomaik olarak gerçekleştirirler.

Örnek üzerinden bahsedersek konu daha bi netlik kazanacatır diye düşünüyorum. Örneğin bir e-ticart sistemimiz var ve bu sistem üzerinden satışta olan ürünlerimizin sayısının tutulduğu bir UrunStok tablomuz olsun. Kullanıcı geldi sistem üzerinden alışverişini gerçekleştirdi ve x ürnden y adet satın aldı. Stok sayımızın güncelliğini koruyabilmesi için bizim arka planda bir şekilde kullanıcının satın aldığı adet miktarında UrunStok tablosundan x ürüne ait sayıyı azaltmamız gerekmekte. İşte bu örnekte olduğu gibi satış yapıldığında  otomatik olarak satılan x ürün sayısınca UrunStok tablosun ürün miktarı düşülmesi işlemini gerçekleştirme işlemlerinde Trigger lar bizim için biçilmiş kaftan. Biçilmiş kaftan diyorum çünki eğitim veriğim kursiyerler içerisinde çok kez "hocam bu işlemi sadece triggerlarlamı yapabiliriz, başka bir yolu yokmudur" soruları yöneltilmiştir.Makalemizi ilk kez okuyanlar ve özellikle triggerlar hakkında yeni bilgi edinenlerin aklınada bu sorunun geleceğini düşündüğümden bunuda anti parantez belirtmek istedim.Elbetteki bu tarz işlemleri birçok farklı şekilde yapabiliriz ama biraz önceden belirttiğim gibi herhangi bir işlemde başka bir işlemin gerçekleştirilmesi istenildiğinde triggerlar bunu otomatik olarak gerçekleştirdiklerinden dolayı bu anlamda eşsizdirler.

Daha önce okuduğum birçok makalede ve uzman isimlerin yazdığı birçok kitapta triggerlar konusunda kişilerin gözlerinin hep korkutulduğuna şahit oldum. Vay efendim triggerlar zaman zaman yaapılacak başka işlemlerde başımıza bela olurmuşta, yok kontrolü zormuşta bundan dolayı tavsiye etmiyorlarmış. Açıkçası ben bu görüşe şiddetle karşı çıkıyorum. Öncelikle şuna bir açıklık getirelim; yazılım matematik yönü yüksek, yorumlama, birçok adım sonrasını görebilme, öncesini hatırlayabilme, ne yaptığından emin olabilme gibi yetilere sahip kişilerin işidir. Eğer kişi yazdığı sisteme ait Data Basesinde hangi tabloları kullandığını, hangi işlemlerde neleri tetiklediğini kısacası ne yazdığını bilememek, hatırlayamamak ( unutkanlık elbette herkes içindir), yorumlayamamak, anlayamamak gibi durumlarda ise burada iki ihtimal vardır. Bir ya o projeyi yazan kendisi değildir başka bir yerlerden almıştır ki bu tarz durumlar elindeki başkasına ait projeyi sadece kendini geliştirmek için değerlendirmeli oradaki iki değişken ismini değiştirerek kendini yazılımcıdan saymak gibi kendisine en büyük kötülüğü yapacak hataya düşmemeli. Bir diğer seçenekse Üniversite sınavına hiçbir şey bilmediği halde giripte en iyi üniversitenin en yüksek puanlı bölümünü kazanması misali tesadüfi bir şekilde onu yazmıştır ve bununda kendisine bir faydası olmayacaktır. Çünki yazılımcı ne yaptığını ve ne yapacağını bilen kişidir. Hepsinden önemlisi yazdığı koda hakim olan kişidir. Kendi yazdığı koda hakim değilsede bu işi bıraksın anlamında birşey söylemiyorum sadece daha yazılımcı olamadığını kabullenip kendisine yapabileceği en iyi iyliği yapsın ve daha çok, daha çok çalışsın. Nihayi olarak buda ben ve benle aynı fikri taşıyan kişilerin sloganı olsun, Re re ra . Ra ra ra. Trigger trigger çok yaşa ( futboldan pek haz etmeyen ve anlamayan biri olarak böyle bir sloganı atamamak içimde hep uhte kalmıştı. Fırsat bu fırsat dedim ).


Evet uzunca bir giril oldu. Doğru bir makale yazım şekli olmadı açıkçası ama yukarıda kurduğum hercümle benim açımdan dile getirmem kelimeler topluluğuydu.

Gelelim Trigger larımızın genl yapılarına.
SYNTAX (Yazım şekli ) :

create trigger Isim
on TabloAdi
for Insert, Update, Delete (Tek tek veya hepsi birden yazılabilir)
as
islemler

 


Sanırım yukarıda verdiğimiz örnekle birlikte Trigger'lar daha bi açıklık kazanmıştır.

NOT: Buradaki Tablo, kolon isimlerini vs.. ler Northwind Databasesi üzerinden örneklemelerle vermeye çalıştım. İlgili databaseyi buradan indirebilirsiniz. Umarım faydalı olmuştur. 

Sağlıcakla kalınız.




BU İÇERİĞE YORUMDA BULUNUN


Bu MAKALE'ye yorum yapabilmek için Üye olmalısınız ...!


BU İÇERİĞE YAPILAN YORUMLAR