Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Modificar el valor de un campo fecha online

Estas en el tema de Modificar el valor de un campo fecha online en el foro de Mysql en Foros del Web. Lo que quiero es que, cuando alguien cambie el valor de un campo, automáticamente cambie también el valor de otro campo de tipo datetime. Por ...
  #1 (permalink)  
Antiguo 24/04/2009, 10:22
 
Fecha de Ingreso: abril-2006
Mensajes: 11
Antigüedad: 18 años
Puntos: 0
Modificar el valor de un campo fecha online

Lo que quiero es que, cuando alguien cambie el valor de un campo, automáticamente cambie también el valor de otro campo de tipo datetime.
Por ejemplo, en una tabla tengo un campo "ciudad" y otro campo "fechacambiociudad". Cuando añado o edito la información del campo "ciudad" y pongo, por ejemplo, "Soria", lo que quiero es que el valor del campo "fechacambiociudad" se actualize a la fecha y hora actual

¿Alguien puede ayudarme?

Gracias
  #2 (permalink)  
Antiguo 24/04/2009, 11:00
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Modificar el valor de un campo fecha online

Si te refieres a cambiar la fecha al insertar y actualizar en ese campo, CREA un campo timestamp que no acepte nulo y que por defecto cargue la fecha, y además que al actualizar también la cambie.
La sintaxis sería esta:
ALTER TABLE `nombretabla` ADD `nombrecampo` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
  #3 (permalink)  
Antiguo 25/04/2009, 04:04
 
Fecha de Ingreso: abril-2006
Mensajes: 11
Antigüedad: 18 años
Puntos: 0
Respuesta: Modificar el valor de un campo fecha online

Pero se trata de cambiar el valor de la fecha de un campo "SOLO" cuando se cambia el valor de otro campo específico, no cuando se modifica cualquier campo del registro
  #4 (permalink)  
Antiguo 25/04/2009, 06:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Modificar el valor de un campo fecha online

tienes, que yo sepa varias opciones, una:
1) hacerlo con programación, lo que te obligaría a comprobar mediante una consulta si cambias el campo cuando hicieras la actualización. Tal vez creas que siempre que aparezca en la consulta de actualización el campo ciudad, debería cambiar la fecha; y así debería ser, pero si escribes el mismo nombre de ciudad, no lo estarías cambiando y sin embargo pondría la fecha de ese momento.
2) con triggers de inserción y de actualización: al insertar añades la fecha; y el de actualización comprobaría si la ciudad anterior es igual a la nueva, y si no lo es cambiaría la fecha... (creo que es la mejor opción), aunque tiene una limitación, sólo podrás tener un trigger por tabla que corresponda a un mismo momento y sentencia ( exige MySQL 5.0.2 o posterior).
Eso es lo que se me ocurre...

Última edición por jurena; 27/04/2009 a las 00:56
  #5 (permalink)  
Antiguo 25/04/2009, 10:02
 
Fecha de Ingreso: abril-2006
Mensajes: 11
Antigüedad: 18 años
Puntos: 0
Respuesta: Modificar el valor de un campo fecha online

Las dos opciones me parecen interesantes. Yo pensaba exactamente la primera y no me preocupa que se escriba lo mismo en el campo y lo actualice.
Respecto a los triggers, nunca los había oído. ¿Cómo podría ser para que cuando cambie el campo ciudad ponga en el campo fechaciudad la fecha actual?

Gracias por tu ayuda
  #6 (permalink)  
Antiguo 26/04/2009, 22:18
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Modificar el valor de un campo fecha online

para la actualización, haces esto en la consola:
mysql> use nombrebase

luego una vez abierta la base

Código sql:
Ver original
  1. mysql> delimiter //
  2. mysql> CREATE TRIGGER cambiador BEFORE UPDATE ON nombretabla
  3. -->FOR EACH ROW
  4. -->BEGIN
  5. -->IF NEW.ciudad != OLD.ciudad THEN
  6. -->SET NEW.fechacambiociudad = NOW();
  7. -->END IF;
  8. -->END;//
  9. mysql> delimiter ;

Para insertar podrías hacer otro trigger de inserción o simplemente al crear el campo como timestamp no permitir nulo y hacer que inserte la fecha del día por defecto. Esta es la idea. No olvides que la versión debe ser igual o posterior a 5.0.2 y que debes tener permisos para hacer triggers.

Última edición por jurena; 27/04/2009 a las 00:57
  #7 (permalink)  
Antiguo 27/04/2009, 00:56
 
Fecha de Ingreso: abril-2006
Mensajes: 11
Antigüedad: 18 años
Puntos: 0
Respuesta: Modificar el valor de un campo fecha online

Gracias por tu ayuda. Lo intentaré
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:28.