Я пришел к тому же решению, поэтому код, который я использовал для выполнения задачи:
USE [MyTable]
GO
/**** Object: Trigger [dbo].[trg_MappingHistory] Script Date: 03/20/2012 09:08:34 ****/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[trg_MappingHistory] ON [dbo].[Mappings]
AFTER INSERT, DELETE, UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON ;
DECLARE @HistoriekNrNew INT ;
SELECT @HistoriekNrNew = MAX([dbo].[MappingsHistoriek].[HistoriekNr]) + 1
FROM [dbo].[MappingsHistoriek]
IF @HistoriekNrNew IS NULL
BEGIN
SET @HistoriekNrNew = 1
END
-- Insert statements for trigger here
INSERT INTO MappingsHistoriek
( [dbo].[MappingsHistoriek].[EntiteitNaam] ,
[dbo].[MappingsHistoriek].[AppID] ,
[dbo].[MappingsHistoriek].[LijstID] ,
[dbo].[MappingsHistoriek].[Versie] ,
[dbo].[MappingsHistoriek].[LijstNaam] ,
[dbo].[MappingsHistoriek].[Waarde] ,
[dbo].[MappingsHistoriek].[Type] ,
[dbo].[MappingsHistoriek].[Datum] ,
[dbo].[MappingsHistoriek].[Gebruiker] ,
[dbo].[MappingsHistoriek].[HistoriekNr],
[dbo].[MappingsHistoriek].[Actie]
)
SELECT [dbo].[Entiteit].[Naam] ,
deleted.[AppID] ,
deleted.[LijstID] ,
deleted.[LijstNaam] ,
deleted.[Versie] ,
deleted.[Waarde] ,
deleted.[Type] ,
GETDATE() ,
SYSTEM_USER ,
@HistoriekNrNew ,
'DELETED'
FROM deleted
INNER JOIN [dbo].[Entiteit] ON Entiteit.ID = deleted.AppID
INSERT INTO MappingsHistoriek
( [dbo].[MappingsHistoriek].[EntiteitNaam] ,
[dbo].[MappingsHistoriek].[AppID] ,
[dbo].[MappingsHistoriek].[LijstID] ,
[dbo].[MappingsHistoriek].[Versie] ,
[dbo].[MappingsHistoriek].[LijstNaam] ,
[dbo].[MappingsHistoriek].[Waarde] ,
[dbo].[MappingsHistoriek].[Type] ,
[dbo].[MappingsHistoriek].[Datum] ,
[dbo].[MappingsHistoriek].[Gebruiker] ,
[dbo].[MappingsHistoriek].[HistoriekNr],
[dbo].[MappingsHistoriek].[Actie]
)
SELECT [dbo].[Entiteit].[Naam] ,
inserted.[AppID] ,
inserted.[LijstID] ,
inserted.[LijstNaam] ,
inserted.[Versie] ,
inserted.[Waarde] ,
inserted.[Type] ,
GETDATE() ,
SYSTEM_USER ,
@HistoriekNrNew ,
'INSERTED'
FROM inserted
INNER JOIN [dbo].[Entiteit] ON Entiteit.ID = inserted.AppID
END
GO