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 originalDELIMITER $$
DROP FUNCTION IF EXISTS `dame_hijo`$$
CREATE FUNCTION `dame_hijo`$$(id_cosa INT) RETURNS INT(11)
BEGIN
DECLARE id_del_hijo FLOAT DEFAULT 0;
SELECT id_hijo INTO id_del_hijo FROM tu_tabla WHERE ID=id_cosa;
RETURN id_del_hijo;
END$$
DELIMITER ;
Luego, desde tu cursor, llamas a esta funcion con un while, en plan
Código SQL:
Ver originalSET id_hijo=dame_hijo(id_hijo);
WHILE (id_hijo!=0) DO
UPDATE tabla SET STATUS=0 WHERE id=id_hijo;
SET id_hijo=dame_hijo(id_hijo);
END WHILE;
Espero que te sirva