Något sådant här borde göra vad du behöver. Du skulle ha INSERT
satser nedan infogar värden som indikerar operationen som utförs i MyLogTable
.
CREATE TRIGGER [dbo].[TRIG_MyTable]
ON [dbo].[MyTable]
AFTER INSERT, UPDATE
AS
DECLARE @INS int, @DEL int
SELECT @INS = COUNT(*) FROM INSERTED
SELECT @DEL = COUNT(*) FROM DELETED
IF @INS > 0 AND @DEL > 0
BEGIN
-- a record got updated, so log accordingly.
INSERT INTO MyLogTable
SELECT 'New Values', getdate() FROM INSERTED
INSERT INTO MyLogTable
SELECT 'Old Values', getdate() FROM DELETED
END
ELSE
BEGIN
-- a new record was inserted.
INSERT INTO MyLogTable
SELECT 'Insert', getdate() FROM INSERTED
END
Om du vill kan du också lägga till kolumner från INSERTED
och DELETED
till din loggtabell också om du vill fånga de faktiska kolumnvärdena som infogades eller uppdaterades.