Crear árbol de prelación de Foreign Keys

11/08/2008 - 21:28 por Miguel Acevedo | Informe spam
Hola, necesito desarrollar una aplicación la cual debe poder borrar datos de
las tablas de una base de datos SQL Server, mi pregunta es la siguiente: hay
forma de crear un árbol de dependencias para que en base a esa información
pueda determinar que tablas tendría que borrar para poder borrar la tabla que
indico el usuario del sistema, todo esto para que no den error las Foreign
Keys.

Gracias de ante mano por la ayuda que puedan darme.

Preguntas similare

Leer las respuestas

#6 Miguel Acevedo
11/08/2008 - 23:13 | Informe spam
Ok, dejame probar eso a ver que tal,

Gracias.

"Fredy Rivera" wrote:


Ok... de pronto esto te sirve:

En SQL 200, usa la tabla del sistema sysreferences, en conjunto con las
sysobjects... probablemente necesites tambien la syscolumns y la sysindexes
(o la sysindexkeys)...

En SQL 2005, necesitarias la sys.foreign_keys, junto con la sys.objects...

Saludos desde Colombia...
Fredy (co)

"Miguel Acevedo" wrote:

> Uso SQL Server 2000 y se está planificando migrar a 2005.
>
> "Fredy Rivera" wrote:
>
> > Que version de SQL utilizas??
> >
> > Saludos desde Colombia...
> > Fredy (Co)
> >
> > "Miguel Acevedo" wrote:
> >
> > > Lo que pasa es que es una base de datos que ya está en funcionamiento y no se
> > > definido esa propiedad desde el inicio, también me gustaría poder hacerlo
> > > para cualquier base de datos sin importar que tenga esa propiedad definida o
> > > no.
> > >
> > > Gracias por tu consejo.
> > >
> > > "Fredy Rivera" wrote:
> > >
> > > > Podrias usar la opcion ON DELETE CASCADE en la opcion REFERENCES, cuando
> > > > crees los Foreign Keys...
> > > >
> > > > Saludos desde Colombia...
> > > > Fredy (co)
> > > >
> > > > "Miguel Acevedo" wrote:
> > > >
> > > > > Hola, necesito desarrollar una aplicación la cual debe poder borrar datos de
> > > > > las tablas de una base de datos SQL Server, mi pregunta es la siguiente: hay
> > > > > forma de crear un árbol de dependencias para que en base a esa información
> > > > > pueda determinar que tablas tendría que borrar para poder borrar la tabla que
> > > > > indico el usuario del sistema, todo esto para que no den error las Foreign
> > > > > Keys.
> > > > >
> > > > > Gracias de ante mano por la ayuda que puedan darme.
> > > > >
Respuesta Responder a este mensaje
#7 Salvador Ramos
12/08/2008 - 09:47 | Informe spam
Hola,

Actualmente estoy intentando resolver una situación similar. Encontré el
siguiente script:
http://www.sqlservercentral.com/scr...ent/30445/
Aunque por el momento no he conseguido que funcione correctamente. Entra en
un bucle infinito en el while.

Ya nos cuentas si consigues que funcione o si encuentras alguna otra
solución.

Pd. Si no entras directamente al link, deberás registrarte en dicho sitio.

Un saludo
Salvador Ramos
Solid Quality Mentors (http://www.solidq.com)

www.helpdna.net (información sobre SQL Server y Microsoft .Net)
Visita mi nuevo blog: www.sqlserversi.com


"Miguel Acevedo" escribió en el
mensaje news:
Hola, necesito desarrollar una aplicación la cual debe poder borrar datos
de
las tablas de una base de datos SQL Server, mi pregunta es la siguiente:
hay
forma de crear un árbol de dependencias para que en base a esa información
pueda determinar que tablas tendría que borrar para poder borrar la tabla
que
indico el usuario del sistema, todo esto para que no den error las Foreign
Keys.

Gracias de ante mano por la ayuda que puedan darme.

Respuesta Responder a este mensaje
#8 Miguel Acevedo
12/08/2008 - 15:15 | Informe spam
Muchas gracias, dejame chequearlo a ver que logro

"Salvador Ramos" wrote:

Hola,

Actualmente estoy intentando resolver una situación similar. Encontré el
siguiente script:
http://www.sqlservercentral.com/scr...ent/30445/
Aunque por el momento no he conseguido que funcione correctamente. Entra en
un bucle infinito en el while.

Ya nos cuentas si consigues que funcione o si encuentras alguna otra
solución.

Pd. Si no entras directamente al link, deberás registrarte en dicho sitio.

Un saludo
Salvador Ramos
Solid Quality Mentors (http://www.solidq.com)

www.helpdna.net (información sobre SQL Server y Microsoft .Net)
Visita mi nuevo blog: www.sqlserversi.com


"Miguel Acevedo" escribió en el
mensaje news:
> Hola, necesito desarrollar una aplicación la cual debe poder borrar datos
> de
> las tablas de una base de datos SQL Server, mi pregunta es la siguiente:
> hay
> forma de crear un árbol de dependencias para que en base a esa información
> pueda determinar que tablas tendría que borrar para poder borrar la tabla
> que
> indico el usuario del sistema, todo esto para que no den error las Foreign
> Keys.
>
> Gracias de ante mano por la ayuda que puedan darme.
>



Respuesta Responder a este mensaje
#9 Salvador Ramos
12/08/2008 - 17:59 | Informe spam
Hola,

El amigo Alejandro Mesa encontró la solución al pequeño bug de este script.
El problema es que cuando hay relaciones en una tabla que apuntan a ella
misma (lo típico de una tabla de empleados donde hay una columna Jefe, y
dicha columna contiene una FK sobre la PK de esta misma tabla, que se
utiliza para establecer jerarquías). Pues bien, en estos casos entra en un
bucle infinito.

Para solucionar el problema hay que sustituir el bucle por la solución que
me ha aportado Alejandro, donde se incluye una condición donde la tabla
padre y la tabla hijo sean distintas, evitando el caso comentado
anteriormente:
WHILE @intRowCount <> 0
BEGIN
UPDATE #Hierarchy
SET Hierarchy = Hierarchy + 1
WHERE Hierarchy = @intCounter
AND Parent IN (
SELECT DISTINCT a.Child
FROM #Hierarchy as a
WHERE a.Hierarchy = @intCounter and a.Parent <> a.Child
)
SET @intRowCount = @@Rowcount
SELECT @intCounter = @intCounter + 1
END

Muchas gracias Alejandro

Un saludo
Salvador Ramos
Solid Quality Mentors (http://www.solidq.com)

www.helpdna.net (información sobre SQL Server y Microsoft .Net)
Visita mi nuevo blog: www.sqlserversi.com


"Miguel Acevedo" escribió en el
mensaje news:
Muchas gracias, dejame chequearlo a ver que logro

"Salvador Ramos" wrote:

Hola,

Actualmente estoy intentando resolver una situación similar. Encontré el
siguiente script:
http://www.sqlservercentral.com/scr...ent/30445/
Aunque por el momento no he conseguido que funcione correctamente. Entra
en
un bucle infinito en el while.

Ya nos cuentas si consigues que funcione o si encuentras alguna otra
solución.

Pd. Si no entras directamente al link, deberás registrarte en dicho
sitio.

Un saludo
Salvador Ramos
Solid Quality Mentors (http://www.solidq.com)

www.helpdna.net (información sobre SQL Server y Microsoft .Net)
Visita mi nuevo blog: www.sqlserversi.com


"Miguel Acevedo" escribió en el
mensaje news:
> Hola, necesito desarrollar una aplicación la cual debe poder borrar
> datos
> de
> las tablas de una base de datos SQL Server, mi pregunta es la
> siguiente:
> hay
> forma de crear un árbol de dependencias para que en base a esa
> información
> pueda determinar que tablas tendría que borrar para poder borrar la
> tabla
> que
> indico el usuario del sistema, todo esto para que no den error las
> Foreign
> Keys.
>
> Gracias de ante mano por la ayuda que puedan darme.
>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida