sql >> Databáze >  >> RDS >> Mysql

Kdy se časové razítko (automaticky) aktualizuje?

Zadejte příkaz SHOW CREATE TABLE whatever

Pak se podívejte na definici tabulky .

Pravděpodobně má takovouto čáru

logtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

v něm. DEFAULT CURRENT_TIMESTAMP znamená, že jakýkoli INSERT bez explicitního nastavení časového razítka použije aktuální čas. Podobně ON UPDATE CURRENT_TIMESTAMP znamená, že jakákoli aktualizace bez explicitního časového razítka má za následek aktualizaci na aktuální hodnotu časového razítka.

Toto výchozí chování můžete ovládat při vytváření tabulky.

Nebo, pokud nebyl sloupec s časovým razítkem vytvořen správně, můžete jej změnit.

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

To způsobí, že operace INSERT a UPDATE na tabulce automaticky aktualizují sloupec časového razítka. Pokud chcete aktualizovat whatevertable beze změny časového razítka, tedy

pak musíte vydat tento druh aktualizace.

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

Toto funguje s TIMESTAMP a DATETIME sloupců. (Před verzí MySQL 5.6.5 fungovalo pouze s TIMESTAMP s) Když používáte TIMESTAMP s, jsou zohledněny časové zóny:na správně nakonfigurovaném serveru jsou tyto hodnoty vždy uloženy v UTC a po načtení převedeny na místní čas.



  1. "aktivní" příznak nebo ne?

  2. Existuje PostgreSQL ekvivalent SQL Server Profiler?

  3. MySQL Workbench:Nelze se připojit k serveru MySQL při chybě 127.0.0.1' (10061)

  4. Začínáme s SQL na Oracle Application Express