[Pgsql-ayuda] como lograr un delete recursivo?

claudia patricia claudia_patriciav@yahoo.com
Tue, 28 Jan 2003 12:24:40 -0600 (CST)


hola espero me puedan ayudar, 
la cuestion es que necesito hacer un borrado recursivo
tengo una tabla de tareas
la cual contiene el identificador de la tarea(id) y el
padre de dicha tarea (p-id), al borrar una tarea
necesito borrar todas sus subtareas pero a la ves esas
subtareas crearon a otras tareas.

mi tabla es:

proyectos=# select id,nombre,p_id from tareas;

   id   |         nombre         |  p_id
--------+------------------------+--------
 100018 | tarea 1                |     99
 100019 | subtarea 1.1           | 100018
 100020 | tarea 2                |     99
 100021 | subtarea 1.2           | 100018
 100022 | subtarea 1.1.1         | 100019
 100023 | subtarea 2.1           | 100020
 100024 | tarea 1                |    100
 100025 | subtarea 1.2.1         | 100021
 100026 | subtarea 1.1 de proy 2 | 100024
(9 rows)

cree la siguiente regla
proyectos=# create rule cascada as on delete to tareas
do delete from tareas where p_id=id;

PERO ME MARCA ERROR :(, al borrar un registro

proyectos=# delete from tareas where p_id=99;
ERROR:  query rewritten 10 times, may contain cycles

es posible crear reglas que tengan efecto de
recursividad o existe alguna otra manera de poder
hacerlo?

pór favor me urge!!!!!

_________________________________________________________
Do You Yahoo!?
Información de Estados Unidos y América Latina, en Yahoo! Noticias.
Visítanos en http://noticias.espanol.yahoo.com