USE ProofOfConcept;GOIF OBJECT_ID(N'dbo.MyTable001') IS NOT NULL DROP TABLE dbo.MyTable001;IF OBJECT_ID(N'dbo.AuditLog') IS NOT NULL DROP TABLE dbo.AuditLog;GOCREATE TABLE dbo.MyTable001 (ID INT IDENTITY PRIMARY KEY, Col1 VARCHAR(100), Col2 VARCHAR(100));GOCREATE TABLE dbo.AuditLog (ID INT IDENTITY PRIMARY KEY, LogTime DATETIME NOT NULL DEFAULT (GETDATE()), LogEntry XML);GOCREATE TRIGGER dbo.MyTable001_Audit ON dbo.MyTable001 FOR UPDATE, DELETEAS SET NOCOUNT ON; INSERT INTO dbo.AuditLog (LogEntry) SELECT (SELECT 'dbo.MyTable001' AS Obj, * FROM DELETED FOR XML RAW('PriorValues'), TYPE);GOINSERT INTO dbo.MyTable001 (Col1, Col2)VALUES ('A', 'B'), ('C', 'D');GOSELECT *FROM dbo.AuditLog;GOUPDATE dbo.MyTable001SET Col2 = 'E'WHERE ID = 2;GOSELECT *FROM dbo.AuditLog;GO
NullIf(deleted.MyCol1, inserted.MyCol1) as Col1, NullIf(deleted.MyCol2, inserted.MyCol2) FROM insertedFULL OUTER JOIN deleted ON inserted.ID = deleted.ID