Mysql
 sql >> Base de données >  >> RDS >> Mysql

Existe-t-il un moyen de créer automatiquement un déclencheur lors de la création d'une nouvelle table dans MySQL ?

Comme je l'ai souligné dans votre autre question , je pense qu'un examen des processus et de la sécurité s'impose ici. C'est une base de données auditée, donc personne (surtout des fournisseurs de services tiers) devraient créer des tables dans votre base de données à votre insu .

Le problème que vous avez est que, en plus de la nouvelle table en cours de création, vous devrez également créer une autre table pour stocker les enregistrements audités/modifiés, qui auront une structure identique à la table d'origine avec éventuellement une heure/date et la colonne utilisateur. Si un fournisseur tiers crée cette table, il ne saura pas créer la table d'audit. Par conséquent, même si vous pouviez générer vos déclencheurs de manière dynamique, ils ne fonctionneraient pas.

Il est impossible de créer une seule table qui contiendra tous les enregistrements de modifications pour toutes les autres tables de votre base de données car la structure entre les tables diffère inévitablement.

Par conséquent :effectuez toutes les demandes de modification (par exemple, les fournisseurs souhaitent créer TableX, ils soumettent une demande de modification (y compris le script SQL) expliquant la raison de la modification) à vous-même et/ou à votre équipe.

Vous exécutez le SQL sur une copie de test de votre base de données et utilisez la même structure pour créer une autre table pour contenir les enregistrements modifiés.

Vous créez et testez ensuite les déclencheurs nécessaires, générez un nouveau script SQL pour créer les deux tables et vos déclencheurs et exécutez-le sur votre base de données en direct. Vous autorisez votre fournisseur à utiliser la nouvelle table et c'est parti.

Tout le monde est content. Oui, cela peut prendre un peu plus de temps, et oui, vous aurez plus de travail à faire, mais c'est beaucoup moins de travail que nécessaire pour essayer d'analyser les journaux de requêtes afin de recréer des enregistrements qui ont déjà été modifiés/ supprimé, ou analysez le journal binaire et tenez-vous au courant de chaque modification, et modifiez votre code lorsque le format du fichier journal change, etc.