ใน SQL Server ในการ insert ,Update and delete ข้อมูลต่างๆที่เกิดขึ้นจะถูกเก็บไว้ใน magic table อยู่ 2 table
คือ inserted,deleted tables
inserted table จะเก็บข้อมูล recordที่ถูกดำเนินการ และจะเก็บข้อมุลหลังจากการ Update เสร็จสิ้น
Deleted table จะเก็บข้อมูล record ที่มีการลบไปล่าสุดและเก็บข้อมุลเก่าก่อนการ Update Record ไว้
ในการเขียน Trigger สำหรับ table ใน SQL Server สำหรับการ Insert,delete จะไม่มีปัญหาอะไรดึงข้อมูล
มาตรวจสอบจาก 2 table นั้นโดยตรง แต่ถ้าเป็นการ Update ก็จะต้องเลือกให้ดีว่าจะเอาข้อมูลอะไร ก่อนหรือหลังการ
Update มาเก็บเป็น log นะครับ
ตัวอย่างครับ
CREATE TRIGGER [dbo].[LogTrigger]
ON [dbo].[zzz]
AFTER DELETE,UPDATE
AS
BEGIN
SET NOCOUNT ON;
if exists(select * from inserted)
begin
insert into log_OptFac
select *,GETDATE(),’U’ from deleted
end
else
begin
insert into log_OptFac
select *,GETDATE(),’D’ from deleted
end
END