dos timestamp en un registro

marzo 24, 2010

Si algunos creéis que el PHP es rarito para algunas cosillas, es que no habéis trabajado contra un MYSQL (y aquí el ‘contra’ esta usado en sentido literal).

A la hora de definir los campos de una tabla, existe un tipo de campo llamado timestamp para guardar una marca de tiempo. Podemos usarlo para saber cuando se ha creado un registro, o cuando se ha modificado. Pero, ¿podemos tener dos campos timestamp, uno para la hora de creación y otro para la modificación? Pues si, aunque lo configuración resulta un tanto esotérica:

  1. el campo para la modificación tiene que tener el atributo “on update CURRENT TIMESTAMP”.
  2. el campo para la hora creación no tiene que tener el atributo anterior, y contra toda lógica no tiene como valor por defecto “CURRENT STAMP” (lo normal, si no hay un campo de modificados) sino “NONE”. Cuando insertes registros debes usar la función SQL “now()”:
    INSERT INTO tabla. (CREADO,…) VALUES (now(),..)

Corre el rumor de que si defines el campo creación con el valor por defecto NULL ( y el campo admite NULL) al insertar un registro sin fecha, el valor NULL se sustituye por la fecha actual. Bueno, si lo haces con phpmyadmin, es cierto, pero se trata de un truco, ya que la SQL que genera phpmyadmin introduce la función NOW.  Pero con una consulta directa no va a funcionar.

Hubiera sido mas fácil y lógico que MYSQL admita directamente los dos campos, pero el MYSQL es asín ..de rarito.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: