guia español descargar mysql timestamp

mysql - descargar - qgis español



¿Es posible definir una columna de marca de tiempo que no sea nula y no tenga un comportamiento predeterminado ni un comportamiento especial en la actualización? (2)

Cuando creo una tabla con una columna de marca de tiempo, esa columna se define mágicamente como NO NULL DEFAULT CURRENT_TIMESTAMP en la actualización CURRENT_TIMESTAMP. Ignorando lo extraño que es esto hasta ahora, me gustaría cambiarlo para que no tenga un comportamiento predeterminado "no actualizado".

Descubrí que si cambio la columna a NULL, el valor predeterminado se establece mágicamente en NULL y la "actualización" desaparece mágicamente. Esto es genial, sin embargo, me gustaría que la columna NO sea NULA. Cuando lo cambio de nuevo, reaparecen mágicamente tanto el valor predeterminado como "en la actualización" (configurado en CURRENT_TIMESTAMP).

Sé que podría usar fecha y hora en lugar de marca de hora, pero estoy interesado en la marca de hora porque es consciente de la zona horaria (parece ser como "marca de hora con zona horaria" en Postgres).


Aquí hay una posible solución: Deshabilitar ACTUALIZAR

Básicamente, puedes configurar ts a su valor original así:

UPDATE woot SET col=<value_to_set>, ts=ts;


Las columnas de marca de tiempo son un caso especial. Consulte here : De forma predeterminada, las columnas TIMESTAMP NO son NULL, no pueden contener valores NULL y la asignación de NULL asigna la marca de tiempo actual.

Para obtener información más detallada, lea los valores predeterminados del tipo de datos .

Específicamente esa situación se aplica cuando no se ejecuta en modo estricto. Si se ejecuta en modo estricto, al insertar un NULL se producirá un error.

Esto debería hacerse cargo de ello:

ALTER TABLE tableName ALTER COLUMN columnName DROP DEFAULT;

Si eso no funciona, se supone que esto te deja con el valor predeterminado (se sobrescribe fácilmente) pero elimina la ACTUALIZACIÓN ACTUAL:

ALTER TABLE tableName CHANGE columnName columnName NOT NULL DEFAULT CURRENT_TIMESTAMP;

Tenga en cuenta el nombre de la columna repetida.