SQL - QUERY RECURSIVO

   
Vista:

QUERY RECURSIVO

Publicado por Cynthia (5 intervenciones) el 27/09/2008 01:39:46
Quisiera que por favor me ayuden con el siguiente problema: Quiero eliminar un registro y sus hijos, es decir...tengo una tabla parecida a esta:

TABLA GRUPO:
GRUPO_id decimal(18,0),
GRUPO_nombre varchar(50),
GRUPO_GRUPO_id decimal(18,0) ->El cual es un foreign key a la misma tabla, es decir...el id del grupo padre del cual deriva ese registro o grupo

Quiero eliminar un registro x el primary key, consecuentemente quiero eliminar a todos los registros que tengan como padre a ese registro....

Podría hacer esto con sql?

Agradeciendo de antemano su valiosa y urgente aportación....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Respuesta...

Publicado por Leopoldo Taylhardat (89 intervenciones) el 27/09/2008 17:57:58
Saludos...
Tienes que definir que la integridad por 'DELETE' es en cascada...
Al eliminar el 'PADRE' eliminas a los 'HIJOS' (datos dependientes) en la otra tabla...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Respuesta...

Publicado por Cynthia (5 intervenciones) el 27/09/2008 19:29:20
Disculpa mi ignorancia....pero a que te refieres con "integridad por delete en cascada"??? Podrias darme un ejemplo o algo más específico???
Agracediendo d antemano tu valiosa ayuda......
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Respuesta...

Publicado por Isaias (5073 intervenciones) el 29/09/2008 17:09:20
En algunos motores de bases de datos, se puede definir que se hagan DELETE ON CASCADE, ¿Que motor es el que tu manejas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Respuesta...

Publicado por Cynthia (5 intervenciones) el 29/09/2008 17:52:29
Trabajo con SQL Server 2005...intenté hacerlo con ON DELETE CASCADE al crear el foreign key pero me produce error si deseo realizarlo....dice algo asi como que se puede producir un proceso cíclico en la tabla...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Respuesta...

Publicado por Isaias (5073 intervenciones) el 29/09/2008 20:00:05
Tienes 2 tablas, las llamaremos PADRE e HIJOS, si tu deseas borrar los hijios cuando borres al padre de forma automatica, deberas indicarlo en el FOREING KEY de PADRE, ¿Correcto?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Respuesta...

Publicado por Cynthia (5 intervenciones) el 30/09/2008 02:56:41
Eso es correcto si utilizo 2 tablas...pero en mi caso es una sola....q tiene como campos:
id decimal(18,0), nombre varchar (30) y idPadre decimal(18,0) que es un foreign key a la misma tabla
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Respuesta...

Publicado por Isaias (5073 intervenciones) el 30/09/2008 16:44:57
Entonces, si utilizaste la misma tabla, se llama RECURSIVIDAD y con este metodo (registros, que se apuntan a si mismos), NO PUEDES hacer DELETE ON CASCADE, ya que entras en un CICLO INFINITO.

Deberas hacerlo en entonces por codigo y se me ocurre que deberia ser por TRIGGER.

¿Cuantos niveles tienes de PADRE-HIJO?, ¿Dos?, la pregunta en si, los HIJOS, a su vez, no tienen Hijos??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Respuesta...

Publicado por Cynthia (5 intervenciones) el 30/09/2008 17:18:38
No tienen un número determinado de hijos ni de niveles...en caso de tener que usar triggers....podrías darme un ejemplo de como usarlo...o como sería la posible solucion? Porque en realidad nunca he usado triggers...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Respuesta...

Publicado por Isaias (5073 intervenciones) el 01/10/2008 18:01:39
Es MUY IMPORTANTE, saber si tiene un numero de niveles, ya que de lo contrario se volveria un ciclo interminable y cuando me refiero a niveles, es:

padre1
hijo1
hijo1.1
hijo1.1.1
hijo 2
hijo 3
hijo 3.1
hijo 3.1.1

etc
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar