1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| CREATE OR ALTER TRIGGER [RA].[TrgHistorisationMaTable]
ON [XX].[MaTable]
AFTER INSERT, DELETE, UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Cas d'insertion
IF NOT EXISTS(SELECT * FROM deleted)
BEGIN
INSERT INTO [XX].[Historisation]
([ID], TableSource, OldValue, NewValue,
TypeMvt, DateMvt, AuthorMvt)
SELECT [IDFam], 'MaTable', NULL, (SELECT * FROM inserted where inserted.IDFam = I.IDFam FOR XML PATH('MaTable'), ELEMENTS, ROOT('MaTable')),
'INSERT', SYSDATETIME(), UPPER(SUSER_SNAME())
FROM inserted AS I;
END;
-- Cas de suppression
IF NOT EXISTS(SELECT * FROM inserted)
BEGIN
INSERT INTO [XX].[Historisation]
([ID], TableSource, OldValue, NewValue,
TypeMvt, DateMvt, AuthorMvt)
SELECT [IDFam], 'MaTable', (SELECT * FROM deleted where deleted.IDFam = D.IDFam FOR XML PATH('MaTable'), ELEMENTS, ROOT('MaTable')), NULL,
'DELETE', SYSDATETIME(), UPPER(SUSER_SNAME())
FROM deleted AS D;
END;
-- Cas de la modification
INSERT INTO [XX].[Historisation]
([ID], TableSource,
OldValue,
NewValue,
TypeMvt, DateMvt, AuthorMvt)
SELECT D.[IDFam], 'MaTable',
(SELECT * FROM deleted where deleted.IDFam = D.IDFam FOR XML PATH('MaTable'), ELEMENTS, ROOT('MaTable')),
(SELECT * FROM inserted where inserted.IDFam = I.IDFam FOR XML PATH('MaTable'), ELEMENTS, ROOT('MaTable')),
'UPDATE', SYSDATETIME(), UPPER(SUSER_SNAME())
FROM deleted AS D
INNER JOIN inserted AS I ON I.IDFam = D.IDFam;
END
GO |