Wydaj polecenie SHOW CREATE TABLE whatever
Następnie spójrz na definicję tabeli .
Prawdopodobnie ma taką linię
logtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
w tym. DEFAULT CURRENT_TIMESTAMP
oznacza, że każdy INSERT
bez wyraźnego ustawienia znacznika czasu używa aktualnego czasu. Podobnie, ON UPDATE CURRENT_TIMESTAMP
oznacza, że każda aktualizacja bez wyraźnego znacznika czasu skutkuje aktualizacją bieżącej wartości znacznika czasu.
Możesz kontrolować to domyślne zachowanie podczas tworzenia tabeli.
Lub, jeśli kolumna sygnatury czasowej nie została utworzona poprawnie, możesz ją zmienić.
ALTER TABLE whatevertable
CHANGE whatevercolumn
whatevercolumn TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP;
Spowoduje to, że zarówno operacje INSERT, jak i UPDATE w tabeli automatycznie zaktualizują kolumnę sygnatury czasowej. Jeśli chcesz zaktualizować whatevertable
bez zmiany znacznika czasu, czyli
musisz wydać tego rodzaju aktualizację.
UPDATE whatevertable
SET something = 'newvalue',
whatevercolumn = whatevercolumn
WHERE someindex = 'indexvalue'
Działa to z TIMESTAMP
i DATETIME
kolumny. (Przed wersją 5.6.5 MySQL działał tylko z TIMESTAMP
s) Kiedy używasz TIMESTAMP
s, uwzględniane są strefy czasowe:na prawidłowo skonfigurowanej maszynie serwerowej wartości te są zawsze przechowywane w UTC i po pobraniu tłumaczone na czas lokalny.