Jag har med stor framgång använt en modell där varje tabell har en revisionskopia - samma tabell med några extra fält (tidsstämpel, användar-id, operationstyp) och 3 triggers på den första tabellen för infoga/uppdatera/ta bort.
Jag tycker att detta är ett mycket bra sätt att hantera detta, eftersom tabeller och triggers kan genereras från en modell och det finns lite overhead ur ett förvaltningsperspektiv. Applikationen kan använda tabellerna för att visa en revisionshistorik för användaren (läs -endast).