current_timestamp - MySQL auto-store datetime para cada fila
timestamp mysql automatic (6)
Bueno, no puedes tener ambas cosas:
No es posible que la marca de tiempo actual sea el valor predeterminado para una columna y el valor de actualización automática para otra columna.
Triste, ¿no es así?
Sin embargo, podría usar null en lugar de now () siguiendo este consejo
En MySQL, estoy cansado de agregar las columnas dt_created
y dt_modified
(que son dt_modified
fecha y hora de creación y última modificación, respectivamente) a todas las tablas que tengo en mi base de datos.
Cada vez que INSERT
o UPDATE
la base de datos, tendré que usar la palabra clave NOW()
. Esto va por mi persistencia.
¿Hay alguna alternativa eficiente donde MySQL pueda almacenar automáticamente al menos el tiempo de datos de la fila que se inserta y me permite recuperarlo?
En phpmyadmin puedes establecer
O use esta consulta
ALTER TABLE `tablename`
CHANGE `dt_created` `dt_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
Puede usar restricciones PREDETERMINADAS para establecer la marca de tiempo:
ALTER TABLE
MODIFY dt_created datetime DEFAULT CURRENT_TIMESTAMP
ALTER TABLE
MODIFY dt_modified datetime DEFAULT ON UPDATE CURRENT_TIMESTAMP
Entonces no tendría que especificar NOW()
en sus instrucciones INSERT / UPDATE.
Referencia: propiedades TIMESTAMP
Se hizo una pregunta similar aquí " Marca de tiempo para MySQL ", el campo de marca de tiempo se actualizará cada vez que se acceda. También puede considerar un Trigger colocado en la tabla en cuestión para rellenar automáticamente esos campos por usted. Dependiendo del entorno, a algunas tiendas / empresas no les gusta el uso de factores desencadenantes y, por lo tanto, es posible que tenga que buscar soluciones alternativas.
Si usas phpmyadmin , puedes hacerlo de la siguiente manera:
ALTER TABLE `tablename` CHANGE `dt` `dt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
debería ser el código correcto.