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

Hacer select en trigger

Estas en el tema de Hacer select en trigger en el foro de Mysql en Foros del Web. Hola a todos, necesito hacer un trigger que antes de eliminar un registro de una tabla consulte otra tabla, donde estan las tablas que contienen ...
  #1 (permalink)  
Antiguo 27/03/2012, 09:10
Yoi
 
Fecha de Ingreso: noviembre-2008
Mensajes: 144
Antigüedad: 15 años, 4 meses
Puntos: 2
Pregunta Hacer select en trigger

Hola a todos, necesito hacer un trigger que antes de eliminar un registro de una tabla consulte otra tabla, donde estan las tablas que contienen registros del que se va a eliminar, no se si me hago entender, pero pondre un trigger segun como lo pienso debe ser y ver si es posible, por al momento de ejecutarlo me salta un error:
Código MySQL:
Ver original
  1. CREATE TRIGGER eliminar_minisite_relacionados
  2. BEFORE DELETE ON familia
  3.     DECLARE idFamilia int;
  4.     DECLARE tabla_relacion VARCHAR;
  5.     DECLARE consulta_tablas VARCHAR;
  6.     SET idFamilia = OLD.id_familia;
  7.     BEGIN
  8.         SELECT tabla_familia FROM maestro_modulo_familia WHERE tabla_familia IS NOT NULL;
  9.         SET tabla_relacion = NEW.tabla_familia
  10.         DO
  11.         BEGIN
  12.             INSERT INTO familia_log (id_familia,nombre_familia) values (idFamilia,tabla_relacion);
  13.         END
  14.     END
  15.     INSERT INTO familia_log (id_familia,nombre_familia) values (idFamilia,OLD.nombre_familia);

espero alguien me colabore, sobre como hacer un select dentro del trigger y recorrer la tabla.
Gracias.
  #2 (permalink)  
Antiguo 28/03/2012, 03:39
 
Fecha de Ingreso: junio-2011
Mensajes: 139
Antigüedad: 12 años, 9 meses
Puntos: 42
Respuesta: Hacer select en trigger

Hola Yoi,

Textualmente del manual de MySQL:

Cita:
E.1. Restrictions on Stored Programs
...
The restrictions for stored functions also apply to triggers.
...
Restrictions for Stored Functions
...
  • Statements that return a result set. This includes SELECT statements that do not have an INTO var_list clause and other statements such as SHOW, EXPLAIN, and CHECK TABLE. A function can process a result set either with SELECT ... INTO var_list or by using a cursor and FETCH statements.
  #3 (permalink)  
Antiguo 28/03/2012, 08:29
Yoi
 
Fecha de Ingreso: noviembre-2008
Mensajes: 144
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: Hacer select en trigger

Gracias wchiquito por tu respuesta, ya veo que no podre hacerlo, buscare una manera diferente de hacerlo, lo hare desde el propio PHP, jiji queria que al eliminar un registro se eliminaran los demas relacionados en las demas tablas, no queria poner las tablas directamente en el trigger, ahora tengo dos opciones, una poner las tablas directamente en el trigger o la otra eliminar los registros desde el propio PHP, Gracias...
  #4 (permalink)  
Antiguo 28/03/2012, 08:50
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: Hacer select en trigger

Si lo que quieres es que al eliminar un registro de la tabla FAMILIA, se eliminen los registros de las otras tablas donde esta está relacionada, ¿por qué no lo haces con las FK usando ON DELETE CASCADE en su definición?
En todo caso, yo pondría toda la operatoria dentro de un SP. Posiblemente sería más sencillo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: registros, select, tabla, tablas, trigger
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 01:30.