Ge kommandot SHOW CREATE TABLE whatever
Titta sedan på tabelldefinitionen .
Den har förmodligen en sådan här rad
logtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
i det. DEFAULT CURRENT_TIMESTAMP
betyder att någon INSERT
utan en explicit tidsstämpelinställning använder den aktuella tiden. Likaså ON UPDATE CURRENT_TIMESTAMP
betyder att varje uppdatering utan en explicit tidsstämpel resulterar i en uppdatering av det aktuella tidsstämpelvärdet.
Du kan styra detta standardbeteende när du skapar din tabell.
Eller, om tidsstämpelkolumnen inte skapades korrekt från början, kan du ändra den.
ALTER TABLE whatevertable
CHANGE whatevercolumn
whatevercolumn TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP;
Detta gör att både INSERT- och UPDATE-operationerna i tabellen automatiskt uppdaterar din tidsstämpelkolumn. Om du vill uppdatera whatevertable
utan att ändra tidsstämpeln, det vill säga
då måste du utfärda den här typen av uppdatering.
UPDATE whatevertable
SET something = 'newvalue',
whatevercolumn = whatevercolumn
WHERE someindex = 'indexvalue'
Detta fungerar med TIMESTAMP
och DATETIME
kolumner. (Före MySQL version 5.6.5 fungerade det bara med TIMESTAMP
s) När du använder TIMESTAMP
s, tidszoner beaktas:på en korrekt konfigurerad servermaskin lagras dessa värden alltid i UTC och översätts till lokal tid vid hämtning.