Question

En MySQL, je suis malade d'ajouter les colonnes dt_created et dt_modified (qui sont l'horodatage de la date de création et de dernière modification, respectivement) à toutes les tables que j'ai dans ma base de données.

Chaque fois que je INSERT ou UPDATE la base de données, je vais devoir utiliser le mot clé NOW(). Cela va dans toute ma persévérance.

est-il une alternative efficace où MySQL peut stocker automatiquement au moins la DataTime de la ligne qui est insérée et laissez-moi récupérer?

Était-ce utile?

La solution

Vous pouvez utiliser des contraintes de défaut pour définir l'horodatage:

ALTER TABLE
 MODIFY dt_created datetime DEFAULT CURRENT_TIMESTAMP

ALTER TABLE
 MODIFY dt_modified datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Ensuite, vous ne devez spécifier NOW() dans vos instructions INSERT / UPDATE.

Référence: propriétés TIMESTAMP

Autres conseils

Si vous utilisez phpmyadmin vous pouvez le faire par:

entrer image description ici

ALTER TABLE  `tablename` CHANGE  `dt`  `dt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

devrait être le bon code.

Eh bien, vous ne pouvez pas avoir les deux:

mysql doc:

  

Il est impossible d'avoir l'horodatage actuel soit la valeur par défaut pour une colonne et la valeur mise à jour automatique pour une autre colonne.

Sad, est-ce pas?

Vous pouvez cependant au lieu de maintenant () utiliser null suivant cette astuce

question similaire a été posée ici « Horodatage pour MySQL » le champ d'horodatage mettra à jour chaque fois il est accessible. Vous pouvez également envisager un Trigger placé sur la table en question pour remplir automatiquement ces champs pour vous. En fonction de l'environnement des magasins / entreprises n'aiment pas l'utilisation des déclencheurs et vous pourriez donc devoir trouver contournements de travail de rechange.

Dans phpmyadmin vous pouvez définir entrer image description ici

OR utiliser cette requête

ALTER TABLE  `tablename`
    CHANGE  `dt_created`  `dt_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top