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
|
INSERT INTO MaTableLOG (MyVal, DateRequete)
SELECT REPLACE( 'UPDATE Table1 SET' +
CASE WHEN (DELETED.CHAMP1 <> INSERTED.CHAMP1 AND INSERTED.CHAMP1 IS NOT NULL AND INSERTED.CHAMP1 <> '') THEN ' ,CHAMP1 = ' + QUOTENAME((INSERTED.CHAMP1),'''') ELSE '' END +
CASE WHEN (DELETED.CHAMP1 IS NOT NULL AND INSERTED.CHAMP1 IS NULL) THEN ' ,CHAMP1 = NULL' ELSE '' END +
CASE WHEN (DELETED.CHAMP2 <> INSERTED.CHAMP2 AND INSERTED.CHAMP2 IS NOT NULL AND INSERTED.CHAMP2<> '') THEN ' ,CHAMP2 = ' + QUOTENAME((INSERTED.CHAMP2),'''') ELSE '' END +
CASE WHEN (DELETED.CHAMP2 IS NOT NULL AND INSERTED.CHAMP2 IS NULL) THEN ' ,CHAMP2 = NULL' ELSE '' END +
' WHERE CHAMPCLEF = ' + QUOTENAME((INSERTED.CHAMPCLEF),''''), 'SET ,','SET ' ) AS MyVal
, GetDate() AS DateRequete
FROM DELETED
INNER JOIN INSERTED ON INSERTED.CHAMPCLEF = DELETED.CHAMPCLEF
WHERE
--l'expression qui doit être insérée dans MyVal
REPLACE( 'UPDATE Table1 SET' +
CASE WHEN (DELETED.CHAMP1 <> INSERTED.CHAMP1 AND INSERTED.CHAMP1 IS NOT NULL AND INSERTED.CHAMP1 <> '') THEN ' ,CHAMP1 = ' + QUOTENAME((INSERTED.CHAMP1),'''') ELSE '' END +
CASE WHEN (DELETED.CHAMP1 IS NOT NULL AND INSERTED.CHAMP1 IS NULL) THEN ' ,CHAMP1 = NULL' ELSE '' END +
CASE WHEN (DELETED.CHAMP2 <> INSERTED.CHAMP2 AND INSERTED.CHAMP2 IS NOT NULL AND INSERTED.CHAMP2<> '') THEN ' ,CHAMP2 = ' + QUOTENAME((INSERTED.CHAMP2),'''') ELSE '' END +
CASE WHEN (DELETED.CHAMP2 IS NOT NULL AND INSERTED.CHAMP2 IS NULL) THEN ' ,CHAMP2 = NULL' ELSE '' END +
' WHERE CHAMPCLEF = ' + QUOTENAME((INSERTED.CHAMPCLEF),''''), 'SET ,','SET ' )
--la clause
NOT LIKE '%SET WHERE%' |