Tetikleyiciler (Triggers)
Tarih
31/10/2009 13:51
Konu Sahibi
arzuu
Yorumlar
8
Okunma
2994
Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 5
  • 4
  • 3
  • 2
  • 1

Derecelendirme: 0/5 - 0 oy



arzuu
desire
Kullanici Avatari
Aktivasyon Bekleyen
341
17/02/2009
-
Ofis XP
24/04/2010,10:04
Tetikleyiciler, Sql Server üzerinde herhangi bir işlem gerçekleştiğinde başka bir işlemin tetiklenmesi istenildiğinde kullanılır. Tetiklenecek işlem tamamen kullanıcının belirlediği çerçevede başka bir kayıt ekleme, rapor alma veya genelde kullanıldığı gibi kontrol mekanizmaları oluşturmak için kullanılabilir.

Tetikleyici Türleri:
SQL Server'da iki farklı tür tetikleyici vardır. Bunlar After ve Instead Of tetikleyicileridir.

"After" Tetikleyicileri:
"After" tetikleyicileri kendiyle ilişkili işlem gerçekleştikten hemen sonra tetiklenir. Veritabanındaki temel işlemler için (ekleme,silme ve güncelleme) "After" tetikleyicileri tanımlanabilir. Örneğin: Yeni bir personel kaydı silindiğinde farklı tablolarda o personele ait diğer bilgilerin silinmesi "After Delete" tetikleyicisi ile sağlanabilir. Birden fazla tetikleyici, bir iş için tanımlanabildiği gibi, bir tetikleyici de, birden fazla iş için tanımlanabilir. "After" tetikleyicileri sadece tablolar için tanımlanabilir.

"Instead Of" Tetikleyicileri:
"Instead of" tetikleyicileri belirlenen işlem tam çalışacakken araya 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 ö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 sadece tablolar için tanımlanabiliyorken "Instead of" tetikleyicileri hem tablolar için hem de "view"lar için tanımlanabilirler.

Alıntıdır.
Cevapla


chopper07
Uzman
Kullanici Avatari
Uzman
E....
1.798
29/01/2008
365
Aydın
Ofis 2003
24/11/2016,13:02
Tetikleyici Oluşturmak:

Tıpkı Sql Server üzerinde yapılan diğer tüm işlemler gibi tetikleyici oluşturmak için de farklı yöntemler mevcuttur. Burada Enterprise Manager kullarak tetikleyici oluşturma üzerinde durulacaktır. Bunun için;

Enterprise Manager başlatılır.
Önceden oluşturulmuş olan Musteriler tablosuna MusteriId (int, identity = Yes) , MusteriKodu (int) olan iki sütun eklenir.
Tetikleyici oluşturmak istenen Musteriler tablosuna sağ tıklanarak All Tasks (Tüm Görevler) başlığından Manage Triggers (Tetikleyicileri Yönet) seçeneği seçilir. Açılan pencere tetikleyici oluşturmak ve düzenlemek için bir arabirim sunar.

resim


Bu arabirim tetikleyici için bir şablon sunar. Köşeli parantezlerin ( [] ) içindeki değerleri değiştirerek istenen işlevi yerine getirecek tetikleyici oluşturulabilir. İlk değişken ( [TRIGGER NAME] ) tetikleyiciye verilmek istenen isim ile değiştirilsin. İkinci değişken, tetikleyicinin hangi tablo üzerinde oluşturulacağını belirler. Tetikleyici oluşturmak için sağ tıklanan tablonun adı (resimde [dbo].[Musteriler] olan kısım) varsayılan olarak şablona yazılmış durumda gelecektir. "For" ifadesinden sonraki kısım tetikleyicinin hangi işlemlerden sonra çalışacağını belirler. As ifadesinden hemen sonra ise tetikleyicinin ne iş yapacağı belirlenir.

Tetikleyicinin kullanımını örneklemek amacıyla, Musteriler tablosuna yeni eklenen bir kayıt olduğunda MusteriKodu'nu '100' olarak olarak atayan bir tetikleyici oluşturulacak. Bunun için bir "After tetikleyicisi" kullanılır.

CREATE TRIGGER [Tetikleyicim] ON [dbo].[Deneme]
FOR INSERT
AS
UPDATE Deneme SET BC_NO = 202
WHERE Deneme.BC_NO= (SELECT BC_NO FROM inserted)

Kodu birinci şekilde görünen arabirimdeki kod kısmına yapıştırılır. Burada dikkat edilmesi gereken Inserted tablosunun kullanımıdır. Inserted, kayıt eklendiğinde eklenen kayıtları tutan, Deleted ise kayıt silindiğinde silinen kayıtları tutan geçici tablolardır. Örnekte eklenen kayıdın MusteriId değeri okunarak, yeni eklenen kaydın MusteriKodu değiştiriliyor.

OK komut düğmesine basarak arabirim kapanır. Artık tetikleyici işlevsel durumdadır. Denemek için Deneme tablosuna yeni bir kayıt girilsin. BC_NO, identity = yes olarak belirlendiğinde otomatik olarak atandığı için ve tetikleyici tarafından doldurulacağı için herhangi bir giriş yapılmamalıdır.

resim

Kaydı girdikten sonra, görüntünün tazelenmesi için ünlem işaretine basılır.

resim

Görüldüğü gibi BC_NO alanı tetikleyici tarafından otomatik olarak doldurulur.

Mevcut bir tetikleyici üzerinde değişiklik yapmak için de aslında aynı yolun takip edilmesi yeterlidir. Sadece birinci şekilde görülen pencerenin üst kısmından istenen tetikleyici seçilmelidir. Bundan sonra güncelleme yapılıp OK(Tamam) komut düğmesine tıklanması yeterli olacaktır. Yine tetikleyici silme işlemi de bu pencereden istenilen tetikleyici seçilip Sil (Delete) komut düğmesine tıklanır gerçekleştirilir.

yazılar alıntıdır.
™Hiç Birimiz, Hepimiz Kadar Akıllı Olamayız...®

resim
resim
resim
Cevapla


arzuu
desire
Kullanici Avatari
Aktivasyon Bekleyen
341
17/02/2009
-
Ofis XP
24/04/2010,10:04
Paylaşımın için teşekkürler chopper07.Tetikleyici oluşturmayı ekliycektim ,sonra tetikleyiciler hakkında daha geniş bilgi buldum hazırlıyıp onu ekliycem.
Cevapla


chopper07
Uzman
Kullanici Avatari
Uzman
E....
1.798
29/01/2008
365
Aydın
Ofis 2003
24/11/2016,13:02
bende yazdıklarınızı görünce altına bişeyler ilave ettim affınıza sığınarak.
™Hiç Birimiz, Hepimiz Kadar Akıllı Olamayız...®

resim
resim
resim
Cevapla


arzuu
desire
Kullanici Avatari
Aktivasyon Bekleyen
341
17/02/2009
-
Ofis XP
24/04/2010,10:04
Siz nerden bileceksiniz benim onun hakkında başka bi konu açıcağımı.Sizinde ilavelerinizle bir bütün oluşturmuş oldu.
Cevapla


benremix
Uzman
Kullanici Avatari
Uzman
R.... S....
4.432
17/05/2009
365
Ankara
Ofis 2010
Bugün,09:18
Sn Arzu hanım ve Sn Erkan Bey, Katkı ve paylaşımlarınız için teşekkürler. Saygılar.
Bilgi paylaşıldıkça çoğalır....
Her engel, yaşam koşullarınızı daha iyileştirecek bir fırsattır.


Access için her zaman lazım olacak konu başlıkları listesi 


Cevapla







Konuyu Okuyanlar: 1 Ziyaretçi


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Tarih Son Yorum
  Tetikleyiciler arzuu 12 3.080 28/12/2009, 12:14 Nurullah_Serdar


Türkçe Çeviri: MCTR, Forum Yazılımı: MyBB, © 2002-2016 MyBB Group.
DMCA.com Protection Status
© Desing by XSTYLED| Develops by ozanakkaya