Fonctions de date/heure en MySQL


précédentsommairesuivant

Mise à jour automatique des dates de modification d'enregistrement

Enoncé du problème
On souhaite créer une table avec un champ pour connaître la date de dernière modification de l'enregistrement (avec mise à jour automatique)

MySQL version 4.1.2+

La mise à jour automatique de la date de modification est possible à partir de la version 4.1.2

On précise ceci dans le script de création de la table :

Script de création
Sélectionnez

CREATE TABLE t (
  tsModif   TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
                      DEFAULT   CURRENT_TIMESTAMP
) ;



Dans ce script:

  • DEFAULT CURRENT_TIMESTAMP précise que la date sera automatiquement mise à jour lors de la création de l'enregistrement (requête INSERT)
  • ON UPDATE CURRENT_TIMESTAMP précise que la date sera automatiquement mise à jour à chaque mise à jour de l'enregistrement (requête UPDATE)

Ceci n'est vrai que pour les champ de type TIMESTAMP. Pour tous les autres types de champs (y compris DATE, TIME et DATETIME), la valeur par defaut doit être une constante.



Pour plus de renseignement, voir ce lien : http://dev.mysql.com/doc/refman/6.0/en/data-type-defaults.html

Rétrocompatibilité

Pour les versions antérieures à la 4.1.2, il faudra gérer dans l'application la mise à jour du champ de date, grâce à la fonction NOW() (ou une autre fonction adaptée au besoin).

Insertion
Sélectionnez

INSERT INTO t (tsCreation, tsModif)
VALUES (NOW(), NOW()) ;
Mise à jour
Sélectionnez

UPDATE TABLE t 
SET tsModif=NOW() ;

précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2006 Pierre Caboche. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.