2008-02-17

Trigger İle Insert, Update, Delete Yakalama

/*
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:

Adsız dedi ki...

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

Mehmet GÜZEL dedi ki...

Olduğu gibi yazmanız gerekiyor.

Adsız dedi ki...

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?

Mehmet GÜZEL dedi ki...

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.

.::YASAL UYARI::.

©2004-2016 Mehmet GÜZEL, http://www.mehmetguzel.net/ & http://www.mehmetguzel.com/

Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.