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 : 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 :
On y ajoute nos deux colonnes et les triggers :
Ensuite, j’insère une ligne :
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 :
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.