From: | Antonio Castro <acastro(at)ciberdroide(dot)com> |
---|---|
To: | Claudia Paricia Villa <cvilla(at)uach(dot)mx> |
Cc: | pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx |
Subject: | Re: [Pgsql-ayuda] como crear delete recursivo? |
Date: | 2003-01-29 09:39:42 |
Message-ID: | Pine.LNX.4.21.0301291030270.928-100000@midas.ciberdroide.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
On Tue, 28 Jan 2003, Claudia Paricia Villa wrote:
> 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.
Para mi esto es más un tema de programación que de Postgres pero la solución
más facil que a mi se me ocurre si se asume una estructura en forma de
arbol es borrar una tarea y luego borrar a todos los huerfanos. Se itera
las veces que sean necesarias mientras queden huerfanos. No es recursivo
pero funciona igual de bien y resulta sencillo.
En vez de ir borrando puedes ir marcandolos todos primero y luego pides
confirmación y los borras en de de una transacción para garantizar que
se hace todo o no se hace nada.
Un saludo
Antonio Castro
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/\ /\ Ciberdroide Informática (Tienda de Linux)
\\W// <<< http://www.ciberdroide.com >>>
_|0 0|_
+-oOOO--(___o___)--OOOo----------------------------------------------------+
| . . . . U U . . . . Antonio Castro Snurmacher acastro(at)ciberdroide(dot)com |
| . . . . . . . . . . |
+()()()----------()()()----------------------------------------------------+
| *** 1.700 sitios clasificados por temas sobre Linux en ***Donde_Linux*** |
| <<< http://www.ciberdroide.com/misc/donde/dondelinux.html >>> |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
From | Date | Subject | |
---|---|---|---|
Next Message | Víctor R. Ruiz | 2003-01-29 12:23:38 | Re: [Pgsql-ayuda] como crear delete recursivo? |
Previous Message | Sergio Aguirre | 2003-01-29 04:44:17 | Re: [Pgsql-ayuda] como crear delete recursivo? |