Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wann wird ein Zeitstempel (automatisch) aktualisiert?

Geben Sie den Befehl SHOW CREATE TABLE whatever ein

Sehen Sie sich dann die Tabellendefinition an .

Es hat wahrscheinlich eine Zeile wie diese

logtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

drin. DEFAULT CURRENT_TIMESTAMP bedeutet, dass jeder INSERT ohne explizite Zeitstempeleinstellung verwendet die aktuelle Uhrzeit. Ebenso ON UPDATE CURRENT_TIMESTAMP bedeutet, dass jede Aktualisierung ohne expliziten Zeitstempel zu einer Aktualisierung des aktuellen Zeitstempelwerts führt.

Sie können dieses Standardverhalten beim Erstellen Ihrer Tabelle steuern.

Wenn die Zeitstempelspalte von Anfang an nicht korrekt erstellt wurde, können Sie sie ändern.

ALTER TABLE whatevertable
     CHANGE whatevercolumn 
            whatevercolumn TIMESTAMP NOT NULL
                           DEFAULT CURRENT_TIMESTAMP 
                           ON UPDATE CURRENT_TIMESTAMP;

Dadurch werden sowohl die INSERT- als auch die UPDATE-Operationen für die Tabelle automatisch zur Aktualisierung Ihrer Timestamp-Spalte veranlasst. Wenn Sie whatevertable aktualisieren möchten ohne den Zeitstempel zu ändern, also

dann müssen Sie diese Art von Update herausgeben.

UPDATE whatevertable
   SET something = 'newvalue',
       whatevercolumn = whatevercolumn
 WHERE someindex = 'indexvalue'

Das funktioniert mit TIMESTAMP und DATETIME Säulen. (Vor MySQL-Version 5.6.5 funktionierte es nur mit TIMESTAMP s) Wenn Sie TIMESTAMP verwenden s werden Zeitzonen berücksichtigt:Auf einem korrekt konfigurierten Servercomputer werden diese Werte immer in UTC gespeichert und beim Abrufen in die Ortszeit übersetzt.