Ver Mensaje Individual
  #8 (permalink)  
Antiguo 30/09/2010, 14:58
meix
 
Fecha de Ingreso: abril-2010
Mensajes: 23
Antigüedad: 14 años
Puntos: 3
Respuesta: Cursor en mysql

Lo lógico es que con cambiar el status del padre, sin hacer un update al hijo, la aplicación ya supiera que está "oculto"

Pero si por aplicación no lo puedes hacer, y necesitas por narices poner el status en la base de datos se actualice, la integrad referencial no te va a servir :(, ahí ya o lo haces por aplicacion, o lo haces por PL/SQL.

crea una function que te devuelva el id del hijo, y 0 si no tiene, en plan

Código SQL:
Ver original
  1. DELIMITER $$
  2.  
  3. DROP FUNCTION IF EXISTS `dame_hijo`$$
  4.  
  5. CREATE FUNCTION `dame_hijo`$$(id_cosa INT) RETURNS INT(11)
  6. BEGIN
  7. DECLARE id_del_hijo FLOAT DEFAULT 0;
  8.  
  9. SELECT id_hijo INTO id_del_hijo FROM tu_tabla WHERE ID=id_cosa;
  10.  
  11. RETURN id_del_hijo;
  12. END$$
  13.  
  14. DELIMITER ;

Luego, desde tu cursor, llamas a esta funcion con un while, en plan

Código SQL:
Ver original
  1. SET id_hijo=dame_hijo(id_hijo);
  2. WHILE (id_hijo!=0) DO
  3. UPDATE tabla SET STATUS=0 WHERE id=id_hijo;
  4. SET id_hijo=dame_hijo(id_hijo);
  5. END WHILE;

Espero que te sirva