[Pgsql-ayuda] como crear delete recursivo?

Claudia Paricia Villa cvilla@uach.mx
Tue, 28 Jan 2003 16:39:58 +0000


hola espero puedan ayudarme.

tengo una tabla con tareas
tareas(id), quien la creo (p_id).
una tareas puede crear varias subtareas y una subtareas a su ves puede 
crear a  otras subtareas

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
 100027 | subtarea se ni proyecto 2 |    102
(10 rows)
al borrar una tareas necesito borrar a todas  sus subtareas y las 
subtareas de esas subtareas.

cree una regla pero me genera un error
proyectos=# create rule cascada as on delete to tareas do delete from 
tareas where p_id=id;
proyectos=# delete from tareas where p_id=99;
ERROR:  query rewritten 10 times, may contain cycles

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

por favor, me urge!!!!