[Pgsql-ayuda] como crear delete recursivo?
Antonio Castro
acastro@ciberdroide.com
Wed, 29 Jan 2003 10:39:42 +0100 (CET)
On Tue, 28 Jan 2003, Claudia Paricia Villa wrote:
> hola espero puedan ayudarme.
>=20
> 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=20
> crear a otras subtareas
>=20
> proyectos=3D# 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=20
> subtareas de esas subtareas.
Para mi esto es m=E1s un tema de programaci=F3n que de Postgres pero la sol=
uci=F3n
m=E1s 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.=20
En vez de ir borrando puedes ir marcandolos todos primero y luego pides=20
confirmaci=F3n y los borras en de de una transacci=F3n para garantizar que=
=20
se hace todo o no se hace nada.
Un saludo
Antonio Castro
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--=
+
/\ /\ Ciberdroide Inform=E1tica (Tienda de Linux)
\\W// <<< http://www.ciberdroide.com >>>
=09 _|0 0|_ =20
+-oOOO--(___o___)--OOOo----------------------------------------------------=
+=20
| . . . . U U . . . . Antonio Castro Snurmacher acastro@ciberdroide.com =
| =20
| . . . . . . . . . . =
|=20
+()()()----------()()()----------------------------------------------------=
+
| *** 1.700 sitios clasificados por temas sobre Linux en ***Donde_Linux*** =
|
| <<< http://www.ciberdroide.com/misc/donde/dondelinux.html >>> =
|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--=
+