/*
Trigger içerisinde aşağıdaki T-SQL kod ile bir kaydın Insert, Update, Delete olduğunu yakalayabilirsiniz.
*/
DECLARE @IfDelete VARCHAR (1), @IfInsert VARCHAR (1)
SET @IfDelete =
(CASE WHEN EXISTS(SELECT * FROM inserted) THEN 'O' -- (O)ld record in update
ELSE 'D' -- (D)eleted record
END)
SET @IfInsert =
(CASE WHEN EXISTS(SELECT * FROM deleted) THEN 'N' -- (N)ew record in update
ELSE 'I' -- (I)nserted record
END)
Seneler önce yazılan bu kodun daha optimize edilmiş hali değerli arkadaşım Levent YILDIZ'dan geldi:
if exists (select * from inserted) and exists (select * from deleted)
select @type = 'U'
else if exists (select * from inserted)
select @type = 'I'
else
select @type = 'D'
4 yorum:
merhabalar kusura bakmayın daha önce böyle bir kontrol kullanmadım örnekteki "deleted","inserted" tablolarının yerine tam olarak ne yazmamız gerekiyor ?
saygılar
Olduğu gibi yazmanız gerekiyor.
3 farklı durumu(ins,del,upd) yakalayan tek bir trigger elde etmiş mi oluyoruz? Öyleyse
CREATE TRIGGER xxx
ON yyy
######
AS
###### seklinde olan bolume
(for|after|instead of) (insert|delete|update)
yazmadan mı trigger ı oluşturuyoruz?
Trigger ınızın klasik syntax ını olduğu gibi yazıyorsunuz.
Bahsettiğim kodları
BEGIN
END
bloğu içerisine yazmalısınız.
Yorum Gönder