RootsLabs

More than a tool ! GitHub Google+ LinkedIn RSS

MySQL : Comment savoir quand un champ a été mis à jour ?

Progi1984 - Commentaires (1)

MySQL est une référence dans le monde de l’Open Source et de la base de données. Une de ces spécificités est le trigger. Mais qu’est ce donc ? Un trigger se déclenche avant ou après une requête (SELECT, INSERT, UPDATE et DELETE). Dans notre cas, nous allons utiliser les triggers pour savoir quand une ligne a été insérée ou mise à jour dans une table.

MySQL

MySQL : Avoir les bonnes colonnes

Pour cela il nous faut deux colonnes : l’une quand la ligne sera créée et l’autre quand la ligne sera mise à jour.
Je préfère définir ces deux colonnes dans le type : timestamp.

Et voilà, votre table a deux colonnes vides.

MySQL : Définir les triggers

Le premier trigger interviendra au moment de la requête INSERT pour lui définir le contenu de colonne tbl_created.
Après insertion, la colonne tbl_created contiendra la date d’insertion, et NULL pour la colonne tbl_updated.

Le second trigger interviendra au moment de la requête UPDATE pour lui définir le contenu de colonne tbl_updated.
Après mise à jour de la ligne, la colonne tbl_updated contiendra la date de mise à jour.

MySQL : Et si on testait ?

Voici la table au départ :
MySQL : Table au début

On y ajoute nos deux colonnes et les triggers :
MySQL : Table après les requêtes ALTER

Ensuite, j’insère une ligne :
MySQL : Table après les requêtes INSERT

PS : On voit bien que le champ tbl_created est rempli, mais pas le champ tbl_updated.

Ensuite, je mets à jour cette même ligne :
MySQL : Table après les requêtes UPDATE

PS : On voit que le champ tbl_created n’a pas bougé, mais que le champ tbl_updated a été mis à jour avec l’heure courante.

Conclusion

Désormais, vous saurez quand votre ligne aura été insérée et mise à jour. Je pense que certains de vos debugs vous remercieront.

Commentaires

1. Antoine, le 16 décembre 2013 à 10:53

Merci !

Ajouter un commentaire

Commentaire :