Donnez la commande SHOW CREATE TABLE whatever
Ensuite, regardez la définition de table .
Il a probablement une ligne comme celle-ci
logtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
dedans. DEFAULT CURRENT_TIMESTAMP
signifie que tout INSERT
sans paramètre d'horodatage explicite utilise l'heure actuelle. De même, ON UPDATE CURRENT_TIMESTAMP
signifie que toute mise à jour sans horodatage explicite entraîne une mise à jour de la valeur d'horodatage actuelle.
Vous pouvez contrôler ce comportement par défaut lors de la création de votre tableau.
Ou, si la colonne d'horodatage n'a pas été créée correctement au départ, vous pouvez la modifier.
ALTER TABLE whatevertable
CHANGE whatevercolumn
whatevercolumn TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP;
Ainsi, les opérations INSERT et UPDATE sur la table mettront automatiquement à jour votre colonne d'horodatage. Si vous souhaitez mettre à jour whatevertable
sans changer l'horodatage, c'est-à-dire
alors vous devez publier ce type de mise à jour.
UPDATE whatevertable
SET something = 'newvalue',
whatevercolumn = whatevercolumn
WHERE someindex = 'indexvalue'
Cela fonctionne avec TIMESTAMP
et DATETIME
Colonnes. (Avant la version 5.6.5 de MySQL, cela ne fonctionnait qu'avec TIMESTAMP
s) Lorsque vous utilisez TIMESTAMP
s, les fuseaux horaires sont pris en compte :sur une machine serveur correctement configurée, ces valeurs sont toujours stockées en UTC et traduites en heure locale lors de la récupération.