SQL Server’da Bir Trigger İçinde Insert, Update ve Delete Kullanmak

Herkese merhaba,

Bu yazıda SQL Server’da bir trigger içerisinde insert, update ve delete komutlarının nasıl kullanılacağı hakkında bilgi vereceğim. İşlemi anlamak için aşağıdaki örneği inceleyelim.

--Tabloların oluşturulması

CREATE TABLE Calisanlar
    (
      ID INT IDENTITY(1, 1)
             PRIMARY KEY ,
      Ad VARCHAR(50) ,
      Bolum VARCHAR(50)
    )

CREATE TABLE CalisanlarLog
    (
      CalisanLogID INT IDENTITY(1, 1)
                    PRIMARY KEY ,
      CalisanID INT ,
      Ad VARCHAR(50) ,
      Bolum VARCHAR(50) ,
      Tip VARCHAR(10)
    )


--Trigger'in yazılması

CREATE TRIGGER TriggerIfadesi ON Calisanlar
AFTER INSERT, UPDATE, DELETE
AS BEGIN

DECLARE  @ID INT,
               @Name VARCHAR(50),
               @Department VARCHAR(50)

SELECT @ID= ID,
          @Name = Ad,
          @Department = Bolum
           FROM inserted


              SELECT @ID= ID,
                     @Name = Ad,
                     @Department = Bolum
                    
              FROM deleted


   IF EXISTS( SELECT * FROM inserted) AND NOT EXISTS (SELECT * FROM deleted) 
    BEGIN
             INSERT INTO CalisanlarLog(CalisanID, Ad, Bolum, Tip)
              Values( @ID, @Name, @Department, 'Insert')
    END
    

   IF EXISTS( SELECT * FROM inserted) AND EXISTS (SELECT * FROM deleted)
    BEGIN
            INSERT INTO CalisanlarLog(CalisanID, Ad, Bolum, Tip)
              Values( @ID, @Name, @Department, 'Update')
    END
      
  
       IF EXISTS( SELECT * FROM deleted) AND NOT EXISTS (SELECT * FROM inserted)
       BEGIN
            
         INSERT INTO CalisanlarLog(CalisanID, Ad, Bolum, Tip)
           Values( @ID, @Name, @Department, 'Delete')

       END
END

--Tablolarımızı kontrol edelim.

SELECT * FROM dbo.Calisanlar
SELECT * FROM dbo.CalisanlarLog


INSERT INTO dbo.Calisanlar
        (Ad, Bolum )
VALUES  ( 'Yavuz', -- Ad - varchar(50)
          'Mühendis'  -- Bolum - varchar(50)
          )

--Tablolarımızı kontrol edelim.

SELECT * FROM dbo.Calisanlar
SELECT * FROM dbo.CalisanlarLog

INSERT INTO dbo.Calisanlar
        (Ad, Bolum )
VALUES  ( 'Pelin', -- Ad - varchar(50)
          'Kimyager'  -- Bolum - varchar(50)
          )

--Tablolarımızı kontrol edelim.

SELECT * FROM dbo.Calisanlar
SELECT * FROM dbo.CalisanlarLog

DELETE FROM dbo.Calisanlar WHERE ID=1

--Tablolarımızı kontrol edelim.

SELECT * FROM dbo.Calisanlar
SELECT * FROM dbo.CalisanlarLog

Burada kodları iyi incelerseniz göreceksiniz ki kontrol edilen nokta inserted ve deleted tablolarıdır. Bu tablolar kontrol edilerek işlemin Insert, Update ya da Delete mi olduğu hakkında bilgi alınabilir.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

SQL Server Eğitimleri Kanalına Abone Olun

Şunlar makaleler de hoşunuza gidebilir