MySQL : Comment savoir quand un champ a été mis à jour ?
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.
ALTER TABLE `matable` ADD `tbl_created` TIMESTAMP NULL DEFAULT NULL; ALTER TABLE `matable` ADD `tbl_updated` TIMESTAMP NULL DEFAULT NULL;
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.
DELIMITER | DROP TRIGGER IF EXISTS `matable_tbl_created`| CREATE TRIGGER `matable_tbl_created` BEFORE INSERT ON `matable` FOR EACH ROW BEGIN SET NEW.tbl_created = NOW(); END| DELIMITER ;
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.
DELIMITER | DROP TRIGGER IF EXISTS `matable_tbl_updated`| CREATE TRIGGER `matable_tbl_updated` BEFORE UPDATE ON `matable` FOR EACH ROW BEGIN SET NEW.tbl_updated = NOW(); END| DELIMITER ;
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.
Cet article MySQL : Comment savoir quand un champ a été mis à jour ? est apparu en premier sur RootsLabs.