sql >> Base de Datos >  >> RDS >> Mysql

¿Cuándo se actualiza una marca de tiempo (automática)?

Da el comando SHOW CREATE TABLE whatever

Luego mire la definición de tabla .

Probablemente tenga una línea como esta

logtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

en eso. DEFAULT CURRENT_TIMESTAMP significa que cualquier INSERT sin una configuración de marca de tiempo explícita utiliza la hora actual. Del mismo modo, ON UPDATE CURRENT_TIMESTAMP significa que cualquier actualización sin una marca de tiempo explícita da como resultado una actualización del valor actual de la marca de tiempo.

Puede controlar este comportamiento predeterminado al crear su tabla.

O bien, si la columna de marca de tiempo no se creó correctamente en primer lugar, puede cambiarla.

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

Esto hará que las operaciones INSERTAR y ACTUALIZAR en la tabla actualicen automáticamente su columna de marca de tiempo. Si desea actualizar whatevertable sin cambiar la marca de tiempo, es decir,

entonces necesita emitir este tipo de actualización.

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

Esto funciona con TIMESTAMP y DATETIME columnas (Antes de la versión 5.6.5 de MySQL, solo funcionaba con TIMESTAMP s) Cuando usas TIMESTAMP s, las zonas horarias se tienen en cuenta:en una máquina de servidor configurada correctamente, esos valores siempre se almacenan en UTC y se traducen a la hora local al recuperarlos.