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
| CREATE TABLE T_TRACE_UPDATE
(NOM_COLONNE sysname,
COL_AVANT VARCHAR(32),
COL_APRES VARCHAR(32),
COL_MAJ BIT);
GO
-- dans le déclencheur :
INSERT INTO T_TRACE_UPDATE
SELECT 'COL1' AS NOM_COLONNE,
CAST(d.COL1 AS VARCHAR(32)) AS COL_AVANT,
CAST(i.COL1 AS VARCHAR(32)) AS COLAPRES,
CASE WHEN d.COL1 = i.COL1 THEN 1 ELSE 0 END AS COL1_MAJ
FROM inserted AS i
JOIN deleted AS d
ON i.??? = d.???
UNION ALL
SELECT 'COL2' AS NOM_COLONNE,
CAST(d.COL2 AS VARCHAR(32)) AS COL_AVANT,
CAST(i.COL2 AS VARCHAR(32)) AS COL_APRES,
CASE WHEN d.COL2 = i.COL2 THEN 1 ELSE 0 END AS COL_MAJ
FROM inserted AS i
JOIN deleted AS d
ON i.??? = d.???
...
-- une vue de synthse pour savoir qu'est ce qui a changé :
SELECT * FROM T_TRACE_UPDATE WHERE COL_MAJ = 1 |
Partager