THT DUYURU

Databases Access Oracle MSSQL MySQL Sybase DB2 Databases

chat
Seçenekler

MSSQL Trigger Kullanımı

Codx - ait Kullanıcı Resmi (Avatar)
Junior Green Team
Üyelik tarihi:
07/2017
Mesajlar:
69
Konular:
11
Ticaret:
(0) %
2 Hafta önce
#1
MSSQL Trigger Kullanımı



Merhabalar, herkese iyi forumlar.

Başlıktan anlaşılacağı üzerine Trigger nedir? Neden ve Nasıl Kullanılır? konularından bahsediyor olacağız.


Trigger Nedir?


Trigger, adından anlaşılacağı üzere bir işlem yapılırken tetiklenen anlamına gelmektedir. Bu tetiklenme işlemi bir işlem yapılmadan önce veya sonrasında gerçekleştirilebilir.
  • Bir tablodan bir veri silindiği zaman silinen verinin başka bir tabloya aktarılması.
  • Sanal tablolarda işlemlerini gerçekleştirirler.
  • Ekleme için Inserted tablosu
  • Silme işlemi için Deleted tablosu devreye girmektedir.
  • Güncelleme için bir update tablosu bulunmamaktadır. Her güncelleme işlemi temelde bir insert işlemi olduğu için Inserted veya Deleted tablosundan takip edilmektedir.
  • Trigger bir işlem esnasında (ekleme silme işlemleri) yapılan işlemi geri sararak veri eklenmesine yada silinmesine engel olabilir.


Triggerlar Hangi Durumda Devreye Girer


After Trigger veya For Trigger belirtilen işlem sonrasında devreye giren triggerdır.



Kullanım Şekli


Not:After ve Instead Of aynı görevi görmektedir.


Örnekler Üzerinde Deneyelim


İşlemleri örnek database olarak Nortwind üzerinde deneyeceğim. Burada tablolar ilişkili olduğu için bulk insert ile herhangi birinin kopyasını alıyorum.
Kod:
SELECT * INTO YedekCustomers FROM dbo.Customers c
Şimdi bu YedekCustomers üzerinde bir trigger yazalım.


Kod:
CREATE TRIGGER DelCustomers
ON YedekCustomers
AFTER DELETE
AS
BEGIN
	ROLLBACK
END
Delete işlemi yapılmak istendiği zaman buna engel olması işlemi rollback etmesi için bir trigger yazdık. Şimdi silmeyi deneyelim.


Görüldüğü üzere hata aldık. İşlemimiz trigger tarafından egellendi.

Notelete komutu trigger tarafından engellenir ama Truncate ile tüm tabloyu sıfırlamak istersek bu trigger işlemine takılmayacağı için buna engel olmayacaktır.

Delete yerine Update veya Insert yazarak aynı işlemi güncelleme silme ve ekleme durumlarını engellemek için de kullanabiliriz. Her bir işlem için sadece bir adet trigger yazılabilir. İki adet insert, update yada delete trigger'ı bulunamaz.

Disable Trigger


Otomasyonumuz üzerinde bir kullanıcının veri silmesin, eklemesini yada güncellemesini engelledik diyelim. Ben Backend tarafında veri tabanı programcısı olarak bu tabloda bir işlem yapma ihtiyacı duydum. Her seferinde trigger'ı silip yeniden mi oluşturmalıyım? Elbette hayır.

Bakın şu CustomerId'ye sahip kayıtı sil dedim ve çalıştı.

Disable ettiğimiz trigger'ı işlemimiz bitince Enable etmeyi unutmamalıyız. Bunun en iyi yolu Disable ve enable triggerlarını yazıp, bu iki satır arasında işlemlerimizi gerçekleştirmek olacaktır.


Eğer Trigger adını bilmiyorsak yada hızlıca işlemlerimizi yapmamız gerekiyorsa şu şekilde de kullanabiliriz.
Kod:
DISABLE	TRIGGER ALL
DELETE FROM YedekCustomers WHERE dbo.YedekCustomers.CustomerID = 'ALFKI'
ENABLE	TRIGGER ALL
Silinen Veriyi Yedekleyelim



Şimdi triggerımızı yazalım



Şimdi Test Edelim


Resimde görüldüğü üzere işlem başarı ile gerçekleşti.

Konum buraya kadardı okuduğunuz için teşekkür eder, iyi forumlar dilerim.
supermacy, ARSEF7 Teşekkür etti.
supermacy - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
04/2020
Nereden:
İSTANBUL
Mesajlar:
84
Konular:
5
Teşekkür (Etti):
71
Teşekkür (Aldı):
43
Ticaret:
(0) %
2 Hafta önce
#2
Cevap: MSSQL Trigger Kullanımı
Ellerinize sağlık
---------------------
NE MUTLU TÜRKÜM DİYENE !
ARSEF7 - ait Kullanıcı Resmi (Avatar)
Çaylak (Green Team)
Üyelik tarihi:
02/2020
Nereden:
Uzay
Mesajlar:
352
Konular:
19
Teşekkür (Etti):
213
Teşekkür (Aldı):
129
Ticaret:
(0) %
2 Hafta önce
#3
Cevap: MSSQL Trigger Kullanımı
Eline sağlık
---------------------
Bin atlı akınlarda çocuklar gibi şendik
Bin atlı o gün dev gibi bir orduyu yendik
_____________________________________________
(Bana Değemezsin Bir Karış Aklınla)
Codx - ait Kullanıcı Resmi (Avatar)
Junior Green Team
Üyelik tarihi:
07/2017
Mesajlar:
69
Konular:
11
Ticaret:
(0) %
2 Hafta önce
#4
Cevap: MSSQL Trigger Kullanımı
Teşekkürler.

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler