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

[SOLUCIONADO] ejecutar trigger en función de un parámetro

Estas en el tema de ejecutar trigger en función de un parámetro en el foro de Bases de Datos General en Foros del Web. Hola, estoy con el manejo de los triggers para que al actualizar una tabla se dispare el mismo y ejecute una serie de cosas...la pregunta ...
  #1 (permalink)  
Antiguo 05/02/2016, 02:54
 
Fecha de Ingreso: abril-2015
Mensajes: 45
Antigüedad: 9 años
Puntos: 0
ejecutar trigger en función de un parámetro

Hola, estoy con el manejo de los triggers para que al actualizar una tabla se dispare el mismo y ejecute una serie de cosas...la pregunta es... puedo ejecutar una u otra cosa en función del valor de un parámetro contenido en otra tabla distinta dentro de la misma BD? En caso de que se pueda...¿cómo?
Esto es lo que intento:
DROP TRIGGER IF EXISTS `midisparo`;CREATE DEFINER=`usuario`@`localhost` TRIGGER `midisparo` AFTER UPDATE ON `tabla1` FOR EACH ROW IF(tabla3.parametro='a') THEN UPDATE tabla2 SET campo1=NEW.campo1, campo2=NEW.campo2, campo3=NEW.campo3 WHERE campoid IN(SELECT campoid FROM tabla1); END IF

Si no le pongo la cláusula IF el TRIGGER funciona correctamente, pero intento que funcione a partir de determinado valor de un parámetro en otro tabla...¿se podrá?

Última edición por gusiluz1977; 05/02/2016 a las 03:00 Razón: Aclarar
  #2 (permalink)  
Antiguo 05/02/2016, 05:37
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: ejecutar trigger en función de un parámetro

Para obtener un parámetro almacenado en una tabla debes usar una consulta...

Esa cosa "tabla3. parametro='a'" no tiene ningún sentido. Es basura en el código.
Además, en MySQL toda rutina de más de una línea, como esta, debe estar en un bloque BEGIN/END.
__________________
¿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 08/02/2016, 05:26
 
Fecha de Ingreso: abril-2015
Mensajes: 45
Antigüedad: 9 años
Puntos: 0
Respuesta: ejecutar trigger en función de un parámetro

¿Cómo le doy valor a ese parámetro dentro del código del trigger? La consulta para dar el valor al parámetro la sé hacer, pero cómo lo introduzco en el código del trigger?
El parámetro sólo tiene dos posibles valores, ambos numéricos.

Estoy intentando lo siguiente, pero no lo consigo, ¿dónde tengo el error?:

CREATE DEFINER=`usuario`@`localhost` TRIGGER `midisparo` AFTER UPDATE ON `tabla1`
FOR EACH ROW
DECLARE filtro INT
SET filtro=(SELECT campo FROM tabla3 WHERE id=0)
IF (filtro=2) THEN
UPDATE tabla2 SET campo1=NEW.campo1, campo2=NEW.campo2, campo3=NEW.campo3 WHERE campoid IN(SELECT campoid FROM tabla1)
END IF

Última edición por gusiluz1977; 08/02/2016 a las 06:07 Razón: Para aclarar mi código

Etiquetas: sql
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 19:52.