Bu konumuzda Trigger’larda instead of kullanımını göreceğiz. Şimdi Araba adında bir tablo oluşturalım.
CREATE TABLE Kitap
(
KitapID INT PRIMARY KEY IDENTITY(1,1),
KitapAdi NVARCHAR(50),
SatildiMi BIT default 1
)
Burada SatildiMi kolonunu default değerini 1 olarak atama işlemini gerçekleştirdik. Oluşturulan tablomuza birkaç kayıt girelim.
INSERT INTO Kitap(KitapAdi) VALUES('Dönüşüm') INSERT INTO Kitap(KitapAdi) VALUES('Beyaz Prens')
Şimdi tablomuza bir göz atalım.
Gördüğümüz gibi SatildiMi kolonumuz direk olarak 1 sayısını getirdik. Şimdi de bu tablo üzerinde yapılacak bir delete işlemi için bir trigger yazalım. Yazdığımız trigger, kaydı silmeyerek, SatildiMi kolonuna 0 değerini atasın. Yani silme işlemi yerine update işlemi yapacağız.
CREATE TRIGGER TRG_PasifYap ON Kitap INSTEAD OF DELETE AS UPDATE K SET SatildiMi=0 FROM Kitap K JOIN deleted D ON K.KitapID=D.KitapID
Kitap tablosundan bir kayıt silelim.
DELETE Kitap WHERE KitapID=1
Görüldüğü gibi silme işlemi gerçekleşmedi onun yerine bizim yazmış olduğumuz trigger devreye girerek update yapmak istediğimiz işlemi gerçekleştirdi.
Çok karmaşık olan Trigger konusunu sizler için 3 parça halinde sunmayı amaçladım. Umarım anlaşılmıştır.
İyi kodlamalar..
0 yorum