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:

  1. 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

    YanıtlaSil
  2. 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?

    YanıtlaSil
  3. 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.

    YanıtlaSil

Lütfen yorumlarınızda Ad Soyad ve Web sayfanızın adresini girelim!