Tetikleyici Türleri Nelerdir? Tetikleyici Nasıl Oluşturulur?

Tetikleyici Türleri Nelerdir? Tetikleyici Nasıl Oluşturulur? Merhaba arkadaşlar, Az evvela yazdığım makaleyi kısa bir biçimde sonlandırmak istemiştim, bu makalemde ise kalan konulara değineceğiz. Öncelikle sizlere oluşturucu türlerinden olan After Tetikleyicileri ve Instead Of Tetikleyicileri’nin açıklamalarını yapacağım ve ardından nasıl oluşturucu oluşturulduğunu anlatacağım. Arkadaşlar evvela şunu belirtmek istiyorum Şayet anlayamadığınız ya da lüzumsuz gördüğünüz konuları yorum şekilde yazıp bana iletirseniz her muhtelif görüşünüzü dikkate alacağım. Ayrıca sorularınızı Facebook ve Twitter profillerimizden de bizi takip ederek her ayrıcalıklı soruyu paylaşabilirsiniz… ———————————————- TETİKLEYİCİ TÜRLERİ                    * After Tetikleyicileri After tetikleyicileri, kendiyle ilişkili işlem gerçekleştikten hemen sonra ateşlenir. Veritabanındaki temel işlemler için (ekleme, silme ve güncelleme) After tetikleyicileri tanımlanabilir. Örneğin, yeni bir personel kaydı silindiğinde muhtelif tablolarda o personele ait diğer bilgilerin silinmesi After Delete tetikleyicisi ile sağlanabilir. Birden fazla tetikleyici, bir meslek için tanımlanabildiği gibi, bir oluşturucu de birden bire fazla meslek için tanımlanabilir. After tetikleyicileri, yalnızca tablolar için tanımlanabilir.                    * Instead Of  Tetikleyicileri Instead of tetikleyicileri, belirlenen işlem gerçekleşirken devreye girer ve kendi içinde tanımlanan komutları icra etmeye başlar. Yani, belirlenen işlemin yerine geçer. Instead of tetikleyicileri işlemlerin arasına girebildiğinden kontrol amaçlı kullanılabilirler. Örneğin, ekleme işlemi için tanımlanan bir tetikleyici, ekleme işleminden hemen herşeyden önce araya girerek uygun koşulların sağlanıp sağlanmadığını kontrol edebilir. Tıpkı After tetikleyicileri gibi temel veritabanı işlemleri için Instead Of tetikleyicileri tanımlanabilir. Fakat, After tetikleyicileri yalnızca tablolar için tanımlanabilirken Instead Of tetikleyicileri hem tablolar için hem de görünümler (views) için tanımlanabilirler. ———————————————————— Tetikleyici Oluşturmak Konusuna Gelecek Olursak… Tetikleyiciyi oluşturmak için CREATE TRIGGER ifadesi yada Managemet Studio’da tablo altında bulunan Triggers klasörü üstünde sağ tıklayarak açılan menüden New Trigger komutu kullanılır. CREATE TRIGGER’i kullanabilmek için sysadmin, db_owner yada db_ddladmin rolüne sahip olmak gerekir. Bir oluşturucu (trigger) öbür bir tabloya erişecekse bu tablo için de tetikleyici oluşturan kullanıcının erişim izni ve ya güncelleme izni olması gerekir. Yazılışı; CREATE TRIGGER tetikleyici_adi ON tablo_adi FOR ya da AFTER yada INSTEAD OF (INSERT ve ya UPDATE yahut DELETE) AS Sql ifadeleri ———————————————————— INSERT Tetikleyicisi Bir tablo üstünde yeni kayıtlar girildikten sonra devreye giren tetikleyicidir. Insert tetikleyici devreye girdikten sonra Inserted tablosunda yeni dahil olan kayıtların bir kopyası tutulur. Inserted tablosu, asıl tablonun yapısal bir kopyası olup oluşturucu sonlanana kadar saklanır. Eğer, bir tabloya aniden fazla kayıt girildiyse oluşturucu her kayıt için ayrı ayrı devreye girmez. Tek seferde işlemi gerçekleştirir. Çünkü SQL Server, satır bazında tetikleyici desteği sağlamamaktadır. DELETE Tetikleyicisi Tablodan bir kayıt silindiğinde otomatik şekilde yapılması istenen işlemler için DELETE tetikleyicisi kullanılır. DELETE tetikleyicisi çalıştıktan sonra silinen kayıt Deleted sahte tablosuna kaydedilir. Deleted tablosunun Inserted tablosundan farkı, asıl tablodan silinen kayıt bundan sonra Deleted tablosunda yer almaktadır. UPDATE Tetikleyicisi Tablo üstündeki kayıt ya da kayıtlarda güncelleme olduğunda devreye girecek olan tetikleyicidir. INSERT ve DELETE tetikleyicilerden biraz farklıdır. Farkı ise UPDATE tetikleyici devreye girdiğinde Inserted düzmece tablosu asıl tablodaki kayıtlardan, düzenlenmiş kayıtların kopyasını, Deleted düzmece tablosu ise kayıtların düzenleme işleminden önceki hâllerini tutar. INSTEAD OF Tetikleyicisi INSTEAD OF tetikleyicisi, belirlenen işlem gerçekleşirken devreye girer ve kendi içinde tanımlanan komutları icra etmeye başlar. Yani, belirlenen işlemin yerine geçer. Bu tetikleyiciden önceki tetikleyiciler, veriler uygun değilse ROLLBACK ile işlemleri geri alırlar. INSTEAD OF, işlem gerçekleşirken verilerin uygunluğunu denetleyecektir.


Yapılan Yorumlar
Erdem OFLAZ

Bir mum, diğer mumu tutuşturmakla ışığından bir şey kaybetmez.
 Kategoriler
 Popüler yazılar