Pregunta de novato

23/10/2003 - 21:18 por Temiscotles | Informe spam
Saludos
Estoy haciendo una base de datos e intento relaciona 3 tablas.

Me aparece el siguiente mensaje

Unable to create relationship 'FK_CursoPuedeDar_Profesor'.
ODBC error: [Microsoft][ODBC SQL Server Driver][SQL Server]Introducing
FOREIGN KEY constraint 'FK_CursoPuedeDar_Profesor' on table 'CursoPuedeDar'
may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or
ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
[Microsoft][ODBC SQL Server Driver][SQL Server]Could not create constraint.
See previous errors.

Tengo dos tablas, cada una con indices que lo forman 1 o más campos (Tabla1
y Tabla2). Intento relacionar cada una de estas dos tablas con una tercera
(Tabla3) que incluye los campos de las dos con la que se van relacionar y
que conforman el indice de la tercera y me dá el siguiente este mensaje.
Otra cosa, le configura que se dé la actualizacion en cascada de las tablas
1 y 2 a la Tabla3

Tabla1 Tabla2 Tabla3
idCompania idCompania idCompania
idPersona idCurso idCurso
Nombre NombreCurso idPersona
...
Como soluciono esto ?
Espero que me entiendan
Gracias
 

Leer las respuestas

#1 Javier Loria
25/10/2003 - 01:09 | Informe spam
Hola:
Es mucho mas facil si nos envias el codigo de las tablas.
En tu caso es probable que tengas una Tabla de Companias que tiene
tambien una relacion foranea con la Tabla de Cursos (Tabla2) y con la Tabla
de Profesores (Tabla1). Estas relaciones si estan deben estar definidas con
la Opcion de ON DELETE CASCADE y ON UPDATE CASCADE.
Esto produce un efecto "multiple" sobre la tabla CursoPuedeDarProfesor
(Tabla3), ya que el el borrado de una compania, produce que se eliminen
todos los Profesores y todos los cursos, y ahora la cascada continua y ahora
las tablas de Profesores y Cursos quieren borrar (ambas) los
CursosPuedenDar_Profesor.
Tomado de los BOL:
Las series de acciones referenciales en cascada desencadenadas por DELETE o
UPDATE deben formar un árbol que no contenga referencias circulares. Ninguna
tabla puede aparecer más de una vez en la lista de todas las acciones
referenciales en cascada que se obtienen de DELETE o UPDATE. El árbol de
acciones referenciales en cascada no debe tener más de una ruta de acceso a
una tabla específica. Las ramas del árbol se terminan cuando encuentran una
tabla para la que se haya especificado NO ACTION o cuando éste sea su valor
predeterminado
= Por otra parte y mas importante realmente quieres que si alguien borrar
una compania, se autodestruya la BD?

Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Temiscotles escribio:
Saludos
Estoy haciendo una base de datos e intento relaciona 3 tablas.

Me aparece el siguiente mensaje

Unable to create relationship 'FK_CursoPuedeDar_Profesor'.
ODBC error: [Microsoft][ODBC SQL Server Driver][SQL Server]Introducing
FOREIGN KEY constraint 'FK_CursoPuedeDar_Profesor' on table
'CursoPuedeDar' may cause cycles or multiple cascade paths. Specify
ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN
KEY constraints. [Microsoft][ODBC SQL Server Driver][SQL Server]Could
not create constraint. See previous errors.

Tengo dos tablas, cada una con indices que lo forman 1 o más campos
(Tabla1 y Tabla2). Intento relacionar cada una de estas dos tablas
con una tercera (Tabla3) que incluye los campos de las dos con la que
se van relacionar y que conforman el indice de la tercera y me dá el
siguiente este mensaje. Otra cosa, le configura que se dé la
actualizacion en cascada de las tablas 1 y 2 a la Tabla3

Tabla1 Tabla2 Tabla3
idCompania idCompania idCompania
idPersona idCurso idCurso
Nombre NombreCurso idPersona
...
Como soluciono esto ?
Espero que me entiendan
Gracias

Preguntas similares