MSSQL – Trigger ile Log Tutma

Trigger nedir ?

 

Tetikleyici anlamına gelir. Triggerı yazdığımız tablo üzerinde INSERT, UPDATE veya DELETE işlemlerinden birini yapıldığında trigger devereye girer ve kendine atanmış işlemleri yapmaya başlar. Kısacası trigger tablosunun üzerinde bir işlem yapıldığında yapılması gereken işlemlerdir.

 

Trigger ile nasıl Log tutulur ?

 

Aşağıdaki örnekte trigger ile log tutmayı anlatıyorum. Örneğin Personel adında bir tablomuz var, bu tabloyo kopyalayıp Personel_Log diye ayrı bir tablo oluşturuyoruz. Öncelikle Personel tablosundaki tüm sahaları Personel_Log’da bire bir oluşturuyoruz. Daha sonra Personel_Log’daki ID sahasını LogTable_Id olarak değiştiriyoruz ve tablonun sonuna LogProcess (nvarchar) ve LogDate (datetime) sahalarını ekliyoruz. İsterseniz ayrıyetten auto_increment olarak bir ID sahası oluşturabilirsiniz.

 

Neden bu sahaları oluşturduk veya değiştirdik ?

 

LogTable_Id:  Personel tablosunda bulunan ID o satır için değişmez, ama log tablosunda aynı ID’den bir kaç tane olabilir, o yüzden burada LogTable_Id, Personel_Log tablosunun değil Personel tablosnun ID’si olduğunu gösteriyor.

 

LogProcess: Yapılan işlemin UPDATE mi yoksa DELETE mi olduğunu gösteriyor.

 

LogDate: Yapılan işlemin hangi tarihte yapıldığını gösteriyor.

 

KOD:

 

ALTER TRIGGER [dbo].[Trg_Personel_Log]

ON [dbo].[Personel]

FOR UPDATE

AS

INSERT INTO Personel_Log

(

LogTable_Id,

LogProcess,

LogDate

)

select Id,

‘UPDATE’,

GETDATE()

from deleted

 

Bu örnekte Personel tablosunda yapılan UPDATE’in loglaması mevcuttur. Loglamayı istediğiniz sahaları siz ayrıyetten ekleyebilirsiniz.

Soru sormak isterseniz twitter.com/Lacivert hesabıma mesaj atabilirsiniz.

Bir cevap yazın

Dasda Plugin is just active at page.