Sådan noget burde gøre, hvad du har brug for. Du ville have INSERT
sætninger nedenfor indsætter værdier, der angiver den udførte handling 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
Hvis du ville, kunne du også tilføje kolonner fra INSERTED
og DELETED
til din logtabel også, hvis du vil fange de faktiske kolonneværdier, der blev indsat eller opdateret.