Je veux juste rappeler quelques points :
Utiliser des générateurs de code Vous ne pouvez pas avoir une seule procédure pour suivre toutes les tables, vous devrez générer des déclencheurs similaires mais distincts sur chaque table suivie. Ce type de travail est le mieux adapté à la génération de code automatisée. À votre place, j'utiliserais une transformation XSLT pour générer le code à partir de XML, et le XML peut être généré automatiquement à partir de métadonnées. Cela vous permet de maintenir facilement les déclencheurs en les régénérant chaque fois que vous apportez une modification à la logique/structure d'audit ou qu'une table cible est ajoutée/modifiée.
Envisagez la planification des capacités pour la vérification. Une table d'audit qui suit tous les changements de valeur sera, de loin, la plus grande table de la base de données :elle contiendra toutes les données courantes et tout l'historique des données courantes. Une telle table augmentera la taille de la base de données de 2 à 3 ordres de grandeur (x10, x100). Et la table d'audit deviendra vite le goulot d'étranglement de tout :
- chaque opération DML nécessitera des verrous dans la table d'audit
- toutes les opérations administratives et de maintenance devront tenir compte de la taille de la base de données en raison de l'audit
Prendre en compte les changements de schéma . Une table nommée 'Foo' peut être supprimée et plus tard une autre table nommée 'Foo' peut être créée. La piste d'audit doit pouvoir distinguer les deux objets différents. Mieux vaut utiliser une approche dimensionnelle à évolution lente.
Tenez compte de la nécessité de supprimer efficacement dossiers de vérification. Lorsque la période de conservation dictée par les stratégies d'objet de votre application arrive à échéance, vous devez être en mesure de supprimer les enregistrements d'audit dus. Cela peut ne pas sembler si grave maintenant, mais 5 ans plus tard, lorsque les premiers enregistrements sont attendus, la table d'audit est passée à 9,5 To, cela peut poser problème.
Considérez la nécessité d'interroger l'audit . La structure de la table d'audit doit être préparée pour répondre efficacement aux requêtes sur l'audit. Si votre audit ne peut pas être interrogé, il n'a aucune valeur. Les requêtes seront entièrement pilotées par vos besoins et vous seul les connaissez, mais la plupart des enregistrements d'audit sont interrogés par intervalles de temps ("quels changements se sont produits entre 19 h et 20 h hier ?"), par objet (" quels changements ont été apportés à cet enregistrement dans ce table ?') ou par auteur ("quelles modifications a apporté Bob à la base de données ?').