Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

ForeingKey - ciclos o múltiples rutas en cascada

Estas en el tema de ForeingKey - ciclos o múltiples rutas en cascada en el foro de SQL Server en Foros del Web. Buenos días, Al intentar crear 2 foreignkey sobre una tabla que tengan como primarykey el mismo campo de una tabla me produce el siguiente error: ...
  #1 (permalink)  
Antiguo 26/06/2008, 05:37
Avatar de DeYoN  
Fecha de Ingreso: febrero-2004
Mensajes: 81
Antigüedad: 20 años, 3 meses
Puntos: 0
ForeingKey - ciclos o múltiples rutas en cascada

Buenos días,

Al intentar crear 2 foreignkey sobre una tabla que tengan como primarykey el mismo campo de una tabla me produce el siguiente error:

Código:
podrían producirse ciclos o múltiples rutas en cascada. Especifique ON DELETE NO ACTION o UPDATE NO ACTION, o bien modifique otras restricciones FOREIGN KEY.
Os pongo un ejemplo sencillo de lo que intento realizar.

Tengo una tabla USUARIO con un primarykey ID.
Tengo una tabla RELACION con 2 campos que forman la primarykey (ID1, ID2)

Intento conseguir que que al modificar el campo ID de la tabla USUARIO por un lado modifique los campos ID1 de la tabla RELACION, y por otro lado modifique los campos ID2 de la tabla RELACION.

El primer foreignkey lo crea sin problemas, el segundo es cuando da el error.
Yo no veo que exista posibilidad de CICLO por ningún sitio.

Gracias.
  #2 (permalink)  
Antiguo 26/06/2008, 10:27
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: ForeingKey - ciclos o múltiples rutas en cascada

ESpecifica bien de donde vienen esos ID's de la TABLA RELACION, ya uno (ID1) sabemos que es de la tabla USUARIO, y el ID2 de donde es... de la tabla USUARIO tambien???... pues si hay problemas, porque son dos ID's diferentes pero solo un UNICO VALOR, el que viene de USUARIO...

No entiendo exactamente que es lo que quieres lograr... si nos explicas con algun ejemplo real de tu problema... o cual es tu problematica...

Aqui te ayudaran...
  #3 (permalink)  
Antiguo 27/06/2008, 02:09
Avatar de DeYoN  
Fecha de Ingreso: febrero-2004
Mensajes: 81
Antigüedad: 20 años, 3 meses
Puntos: 0
Respuesta: ForeingKey - ciclos o múltiples rutas en cascada

Intentare explicarme mejor:

Una tabla con USUARIOS con primarykey para el campo ID
[ID][Descripcion]
[1][Manolo]
[2][Pepe]
[3][Alberto]
[4][Laura]
.....

Una tabla RELACION con primarykey para campo ID1, ID2. Esta tabla intenta mostrar la relacion que tienen entre los distintos usuarios.
[ID1][ID2]
Si el usuario 1 se relaciona con el 2 ==> [1][2]
Si el usuario 1 se relaciona con el 3 ==> [1][3]
Si el usuario 5 se relaciona con el 6 ==> [5][6]
Si el usuario 2 se relaciona con el 1 ==> [2][1]

Los campos ID1, ID2, viene ambos del primarykey de la tabla USUARIOS, lo que pretendia resolver es el caso en el que el usuario 1 se modifique y pase a ser usuario 7. La tabla Relacion deberia quedar:
[ID1][ID2]
Si el usuario 1 se relaciona con el 2 ==> [7][2]
Si el usuario 1 se relaciona con el 3 ==> [7][3]
Si el usuario 5 se relaciona con el 6 ==> [5][6]
Si el usuario 2 se relaciona con el 1 ==> [2][7]


Gracias, un saludo.
  #4 (permalink)  
Antiguo 27/06/2008, 12:42
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: ForeingKey - ciclos o múltiples rutas en cascada

Activa tu UPDATE ON CASCADE............
  #5 (permalink)  
Antiguo 01/07/2008, 02:55
Avatar de DeYoN  
Fecha de Ingreso: febrero-2004
Mensajes: 81
Antigüedad: 20 años, 3 meses
Puntos: 0
Respuesta: ForeingKey - ciclos o múltiples rutas en cascada

Buenos días,

El problema es que no me permite activar el UPDATE en cascada, por el asunto que comento en el primer post.

Gracias de todos modos.

De momento hemos solucionado el problema con un trigger, pero me gustaría haberlo solucionado con los foreignkey.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:00.