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

requiero de un trigger para actualizar un campo de estado

Estas en el tema de requiero de un trigger para actualizar un campo de estado en el foro de Mysql en Foros del Web. Hola a todos, tengo una consulta que realizar... en una tabla tengo un campo que describe el estado de una tabla de ofertas o promociones ...
  #1 (permalink)  
Antiguo 29/08/2009, 10:18
Avatar de ALTERUS  
Fecha de Ingreso: abril-2009
Mensajes: 20
Antigüedad: 15 años
Puntos: 0
Busqueda requiero de un trigger para actualizar un campo de estado

Hola a todos, tengo una consulta que realizar... en una tabla tengo un campo que describe el estado de una tabla de ofertas o promociones y quiero que un disparador ejecute la actualizacion de este campo, el objetivo es que dada cierta fecha de vencimiento este campo deberia de actualizarse a un estado de inactivo, con lo cual la oferta queda desactivada, asi como tambien si el stock de la oferta se agoto(stock=0 unids), cambie de estado a inactivo.

Diganme hay alguna forma de hacer esto?
o tengo que implementarlo desde la aplicación??
Gracias por su atención.
  #2 (permalink)  
Antiguo 29/08/2009, 17:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: requiero de un trigger para actualizar un campo de estado

Un trigger se dispara solamente ante eventos INSERT DELETE o UPDATE. No se disparan ante eventos de tiempo o niguna otra situación, por lo que no es posible crear un trigger que haga lo que tu pretendes.
En MySQL sí existe, desde la versión 5.1, un objeto que puede hacer lo que quieres y es EVENT, el cual se define así: 12.1.11. CREATE EVENT Syntax
Fuera de eso existen dos caminos: O crear un proceso en el cron (linux) o tarea programable, o bien gestionar el evento a nivel de la web o de la aplicación que usa esa abse.
En cualquiera de los dos casos, no es asunto de la base de datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 29/08/2009, 17:59
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: requiero de un trigger para actualizar un campo de estado

Yo tengo un sistema con fecha de expiración que valida la fecha al ingresar al sistema. Si la fecha es mayor, hace un update a la tabla y no vuelve a dejar entrar ese usuario hasta que un admin no lo habilite.

Desde base de datos, sería disparar un trigger en la tabla.


saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #4 (permalink)  
Antiguo 29/08/2009, 18:03
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: requiero de un trigger para actualizar un campo de estado

Interesante lo del create event. No lo conocía.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 29/08/2009, 18:41
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: requiero de un trigger para actualizar un campo de estado

siguiendo un poco este tema..
No logro hacer funcionar esto

Código mysql:
Ver original
  1. mysql> select version();
  2. +------------------+
  3. | version()        |
  4. +------------------+
  5. | 5.1.34-community |
  6. +------------------+
  7. 1 row in set (0.00 sec)
  8.  
  9. mysql> select *from usuarios;
  10. +----+----------+
  11. | id | nombre   |
  12. +----+----------+
  13. |  1 | usuario1 |
  14. |  2 | usuario2 |
  15. |  3 | usuario3 |
  16. +----+----------+
  17. 3 rows in set (0.00 sec)
  18.  
  19. mysql> create event q on schedule at now() + interval 1 minute do insert into pruebas.usuarios values(4,'usuario4');
  20. Query OK, 0 rows affected (0.00 sec)
  21.  
  22. mysql> select now();
  23. +---------------------+
  24. | now()               |
  25. +---------------------+
  26. | 2009-08-29 19:36:59 |
  27. +---------------------+
  28. 1 row in set (0.00 sec)
  29.  
  30. mysql> select now();
  31. +---------------------+
  32. | now()               |
  33. +---------------------+
  34. | 2009-08-29 19:38:01 |
  35. +---------------------+
  36. 1 row in set (0.00 sec)
  37.  
  38. mysql> select *from usuarios;
  39. +----+----------+
  40. | id | nombre   |
  41. +----+----------+
  42. |  1 | usuario1 |
  43. |  2 | usuario2 |
  44. |  3 | usuario3 |
  45. +----+----------+
  46. 3 rows in set (0.00 sec)
Ahí ya debería estar insertado el registro 4. no?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
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 14:56.