Re: [Pgsql-ayuda] como crear delete recursivo?

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 >>> |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

In response to

Responses

Browse pgsql-es-ayuda by date

  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?