sql >> Database teknologi >  >> RDS >> Mysql

Hvornår opdateres et tidsstempel (automatisk)?

Giv kommandoen SHOW CREATE TABLE whatever

Så se på tabeldefinitionen .

Den har sandsynligvis en linje som denne

logtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

i det. DEFAULT CURRENT_TIMESTAMP betyder, at enhver INSERT uden en eksplicit tidsstempelindstilling bruger den aktuelle tid. Ligeledes ON UPDATE CURRENT_TIMESTAMP betyder, at enhver opdatering uden et eksplicit tidsstempel resulterer i en opdatering til den aktuelle tidsstempelværdi.

Du kan kontrollere denne standardadfærd, når du opretter din tabel.

Eller hvis tidsstempelkolonnen ikke blev oprettet korrekt i første omgang, kan du ændre den.

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

Dette vil få både INSERT og UPDATE operationer på tabellen til automatisk at opdatere din tidsstempelkolonne. Hvis du vil opdatere whatevertable uden at ændre tidsstemplet, dvs.

så skal du udsende denne form for opdatering.

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

Dette virker med TIMESTAMP og DATETIME kolonner. (Før MySQL version 5.6.5 fungerede det kun med TIMESTAMP s) Når du bruger TIMESTAMP s, der tages højde for tidszoner:på en korrekt konfigureret servermaskine gemmes disse værdier altid i UTC og oversættes til lokal tid ved hentning.



  1. MySQL RAND() seed-værdier gentages næsten

  2. MySQL-forespørgsel i en løkke vs brug af en SQL-join

  3. SQL Server System Database Vedligeholdelse

  4. Php - Din PHP-installation ser ud til at mangle MySQL-udvidelsen, som kræves af WordPress