2009-05-03 13 views
34

utilizo marca de hora en MySQL 5.x (con PHP) para recordar los tiempos de eventos. Durante el desarrollo tuve que actualizar la tabla con una consulta que cambia algo en todas las columnas. La marca de tiempo se restableció a la hora actual.MySQL marca de tiempo sólo en crear

¿Cómo puedo hacer que la marca de tiempo cambie solo en las inserciones y no en las actualizaciones o que las reemplace?

+1

Una respuesta tardía para otros que pueden buscar en Google esto: si usa un TIMESTAMP cuando realiza ediciones manuales en su base de datos; o si tiene varias columnas TIMESTAMP y no quiere tocarlas todas; el manual de MySQL dice que asigne la columna a sí mismo. Establece explícitamente la columna a su valor actual (es decir, "updated_on = updated_on"), para que no se modifique mediante la ACTUALIZACIÓN. –

Respuesta

65

Here's all you need to know. En resumen, sin embargo, creo que esto debería hacerlo:

ALTER TABLE `mytable` 
CHANGE `mydatefield` `mydatefield` 
TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 
+0

Gracias! Aquí no se requiere la parte "NOT NULL", creo. –

0

Puede usar un default value para ese campo y no incluirlo en la consulta de inserción o actualización.

0
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP 

Muy buena documentación aquí for time-stamp.

+0

Me puede estar perdiendo algo, pero mi tabla está (y fue) definida de esta manera, pero aún así las fechas han cambiado. Desde mysql explica: 'pur_time', 'timestamp', 'NO', '', 'CURRENT_TIMESTAMP', '' – Nir

1

Sugiero usar DATETIME para esa columna. No cambiará cuando se actualice el registro.

Para mí, uso TIMESTAMP para rastrear cuando se tocó por última vez el registro, aunque en general evito su uso.

Cuestiones relacionadas