Z powodzeniem zastosowałem model, w którym każda tabela ma kopię audytu - ta sama tabela z kilkoma dodatkowymi polami (sygnatura czasowa, identyfikator użytkownika, typ operacji) i 3 wyzwalacze na pierwszej tabeli do wstawiania/aktualizacji/usuwania.
Myślę, że jest to bardzo dobry sposób na radzenie sobie z tym, ponieważ tabele i wyzwalacze można generować z modelu i jest to niewielkie obciążenie z perspektywy zarządzania. Aplikacja może używać tabel, aby pokazać użytkownikowi historię audytu (przeczytaj -tylko).