sql >> Databasteknik >  >> RDS >> Mysql

När uppdateras en tidsstämpel (auto)?

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.



  1. Hur man formaterar månaden i romerska siffror i Oracle

  2. DevOps Databas Ordlista för MySQL-nybörjaren

  3. Hur man integrerar Oracle och Kafka

  4. Ta bort alla rader med tidsstämpel äldre än x dagar