Moyen pratique de trouver la dernière mise à jour/insertion/suppression de n'importe quelle table dans une base de données ?
Système d'exploitation: W10.
Cette question concerne spécifiquement ce qui est possible dans MariaDB, en particulier la version "Ver 15.1 Distrib 10.7.3-MariaDB".
Modifier
À partir d' un autre site SO, j'ai découvert qu'à partir de 10.3.4, MariaDB implémente en fait des "tables temporelles". Pas encore clair si cela fournit une solution.
Je souhaite implémenter un moyen d'avoir un horodatage "dernière modification" pour une base de données, c'est-à-dire qui indique quand le dernier INSERT ou DELETE ou UPDATE s'est produit, quelle que soit la table où cela s'est produit. J'ai trouvé ceci, qui avait l'air prometteur... mais ensuite quelques commentaires à propos d'InnoDB information_schema.tables.update_time
m'ont amené à faire une expérience.
Contrairement à ce qui est affirmé à certains endroits sur le fait d' update_time
être toujours NULL
dans les tables InnoDB, cela ne semble pas être le cas avec ce que j'ai. Malheureusement, le commentaire à propos de la définition de cette valeur à NULL
chaque démarrage du serveur semble être vrai.
Ailleurs, j'ai lu que les nouvelles versions de MariaDB, s'éloignant de MySQL vanille, implémentent en fait une sorte d'historique des modifications.
Je travaille actuellement sur l'hypothèse que je devrai implémenter un ON_UPATE
déclencheur pour chaque table, puis obtenir des valeurs pour chacune d'entre elles et trouver la plus récente, afin de déterminer l'heure de "dernière modification" pour l'ensemble de la base de données.
Existe-t-il une autre possibilité avec cette version de MariaDB ?
Solution du problème
créez simplement une table contenant tous les noms de table et une colonne d'horodatage. puis sur le ON_UPATE
déclencheur, mettez simplement à jour l'enregistrement du nom de table.
de cette façon, vous avez une table centrale qui contient les horodatages, ne faites aucun hack.
rester simple.
utilise ça
Commentaires
Enregistrer un commentaire