Marqueurs de temp MySQL (TIMESTAMP)

MySQL

MySQL dispose d'un type TIMESTAMP qui permet d'enregistrer la date et l'heure de création ou de modification d'un enregistrement.

Date et heure de création d'un enregistrement

Si on veut enregistrer la date et l'heure de création de l'enregistrement, on peut utiliser la constante "magique" CURRENT_TIMESTAMP comme valeur par défaut de la colonne TIMESTAMP.

ALTER TABLE `ma_table` 
  ADD `created_on` TIMESTAMP NOT NULL 
  DEFAULT CURRENT_TIMESTAMP

Date et heure de modification d'un enregistrement

Si on veut la date et l'heure de la dernière modification, on ajoutera l'attribut ON UPDATE CURRENT_TIMESTAMP à la colonne.

ALTER TABLE `ma_table` 
  ADD `updated_on` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL
  DEFAULT CURRENT_TIMESTAMP 

Les deux à la fois

Malheureusement, la constante CURRENT_TIMESTAMP ne peut être utilisée qu'une seule fois dans une table. On doit donc utiliser une valeur nulle ('0000-00-00 00:00:00') pour la valeur par défaut de la colonne created_on et utiliser la fonction NOW() lorsqu'on insère les données.

ALTER TABLE `ma_table` 
  ADD `created_on` TIMESTAMP NOT NULL
  DEFAULT '0000-00-00 00:00:00';
ALTER TABLE `ma_table` 
  ADD `updated_on` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL 
  DEFAULT CURRENT_TIMESTAMP;
INSERT INTO `ma_table` (`created_on`) VALUES (NOW());

Etiquettes:

Ajouter un commentaire