Dai il comando SHOW CREATE TABLE whatever
Quindi guarda la definizione della tabella .
Probabilmente ha una linea come questa
logtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
dentro. DEFAULT CURRENT_TIMESTAMP
significa che qualsiasi INSERT
senza un'impostazione di timestamp esplicita utilizza l'ora corrente. Allo stesso modo, ON UPDATE CURRENT_TIMESTAMP
significa che qualsiasi aggiornamento senza un timestamp esplicito comporta un aggiornamento al valore del timestamp corrente.
Puoi controllare questo comportamento predefinito durante la creazione della tabella.
Oppure, se la colonna timestamp non è stata creata correttamente in primo luogo, puoi cambiarla.
ALTER TABLE whatevertable
CHANGE whatevercolumn
whatevercolumn TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP;
Ciò farà sì che le operazioni INSERT e UPDATE sulla tabella aggiornino automaticamente la colonna timestamp. Se vuoi aggiornare whatevertable
senza modificare il timestamp, ovvero
quindi devi emettere questo tipo di aggiornamento.
UPDATE whatevertable
SET something = 'newvalue',
whatevercolumn = whatevercolumn
WHERE someindex = 'indexvalue'
Funziona con TIMESTAMP
e DATETIME
colonne. (Prima di MySQL versione 5.6.5 funzionava solo con TIMESTAMP
s) Quando utilizzi TIMESTAMP
s, i fusi orari vengono contabilizzati:su una macchina server correttamente configurata, quei valori vengono sempre archiviati in UTC e tradotti nell'ora locale al momento del recupero.