web-dev-qa-db-fra.com

Horodatage MySQL uniquement sur create

J'utilise timestamp sur MySQL 5.x (avec PHP) pour mémoriser les temps d'événement. Pendant le développement, j'ai dû mettre à jour la table avec une requête qui modifie quelque chose dans toutes les colonnes. L'horodatage a ensuite été réinitialisé à l'heure actuelle.

Comment puis-je modifier l'horodatage uniquement sur les insertions et non sur les mises à jour ou les remplacer?

35
Nir

Voici tout ce que vous devez savoir . En bref, cependant, je pense que cela devrait le faire:

ALTER TABLE `mytable`
CHANGE `mydatefield` `mydatefield`
TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
68

Je suggère d'utiliser DATETIME pour cette colonne. Cela ne changera pas lorsque l'enregistrement est mis à jour.

Pour moi, j'utilise TIMESTAMP pour suivre la dernière fois que l'enregistrement a été touché, bien qu'en général, je l'évite.

1
Klathzazt

Vous pouvez utiliser un valeur par défaut pour ce champ et ne pas l'inclure dans la requête d'insertion ou de mise à jour.

0
cherouvim
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP

Très bonne documentation ici pour l'horodatage .

0
user99974