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

actualizar automaticamente un campo

Estas en el tema de actualizar automaticamente un campo en el foro de Mysql en Foros del Web. Hola amigos, nuevamente les pido ayuda con algo que me tiene loco, Tengo una tabla en mysql que guarda las facturas TB Facturas = id, ...
  #1 (permalink)  
Antiguo 15/05/2012, 14:49
 
Fecha de Ingreso: noviembre-2003
Mensajes: 2
Antigüedad: 20 años, 4 meses
Puntos: 0
Exclamación actualizar automaticamente un campo

Hola amigos, nuevamente les pido ayuda con algo que me tiene loco,

Tengo una tabla en mysql que guarda las facturas

TB Facturas = id, nro_factura, monto_factura, fecha_factura, estado.


y aqui nace mi consulta, como puedo hacer para que el campo 'estado' tome un valor automaticamente de acuerdo a la fecha de la factura. ejemplo si la fecha de la factura es mayor a 30 dias que el campo estado sea 'vencida' y si es menor a 30 dias estado = 'Vigente'.

Hay alguna forma en mysql que esto lo haga automaticamente.

Espero me puedan ayudar..
  #2 (permalink)  
Antiguo 16/05/2012, 03:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: actualizar automaticamente un campo

No es necesario eso que pides y ademas es peligroso... estas intentando guardar una informacion que se puede calcular a partir de otra que ya tienes guardada.... se podria construir un proceso que haga lo que pides pero si por lo que sea un dia falla te puede quedar la bbdd en estado incoherente....

Supongo que quando dices

Cita:
...la fecha de la factura es mayor a 30 dias que el campo estado sea 'vencida' y si es menor a 30 dias estado = 'Vigente'....
te refieres a 30 dias respecto de la fecha actual.... luego

Facturas vencidas

Código MySQL:
Ver original
  1. FROM facturas
  2. WHERE DATEDIFF(CURDATE(),fecha_factura)>30

Facturas vigentes

Código MySQL:
Ver original
  1. FROM facturas
  2. WHERE DATEDIFF(CURDATE(),fecha_factura)<=30

Todas las facturas

Código MySQL:
Ver original
  1. SELECT *, IF(DATEDIFF(CURDATE(),fecha_factura)<=30,"Vigente","Vencida") as estado
  2. FROM facturas

Y el campo estado no lo necesitas para nada!!!

Ten en cuenta que CURDATE() será la fecha del servidor.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 16/05/2012 a las 03:13
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 10:07.