SQL - Insert a una tabla con llave foranea compuesta

   
Vista:

Insert a una tabla con llave foranea compuesta

Publicado por Benjy (6 intervenciones) el 30/06/2009 22:24:53
Hola, mi problema es el siguiente, tengo dos tablas, una tiene llave primaria compuesta, y va relacionada a la otra, entonces, al tratar de hacer un insert en esta ultima, me manda un error relacionado con la llave foránea compuesta, aquí están las tablas:

(TABLA1)HistorialAutobus
(PK)IdAutobus
(PK)FechaIniStat
(FK)IdRol
(FK)FechaModRol
(FK)DiaSalida
(FK)HoraSalida

(TABLA2)Rol
(PK)IdRol
(PK)DiaSalida
(PK)HoraSalida
(PK)FechaMod

La tabla 2 tiene llave primaria compuesta por 4 campos, los cuales son llave foránea en la tabla 1, al tratar de insertar en la tabla 1 me manda un error relacionado con esta relación, a pesar de que todos los valores de la llave foránea compuesta coinciden con la tabla 2, espero que me puedan dar alguna idea de como resolver este problema.

De antemano gracias.
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

RE:Insert a una tabla con llave foranea compuesta

Publicado por Juan Manuel Castañeda (16 intervenciones) el 01/07/2009 23:36:26
Para poder usar la PK de tabla2 como FK en tabla1no debe ser compuesta porque siéndolo resultaría una relación muchos-a-muchos no soportarda por RDBMS
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:Insert a una tabla con llave foranea compuesta

Publicado por Juan Manuel Castañeda (16 intervenciones) el 02/07/2009 00:06:34
(TABLA1)HistorialAutobus
(PK)IdAutobus
(PK)FechaIniStat
(FK)IdRol

TABLA2)Rol
(PK)IdRol
DiaSalida
HoraSalida
FechaMod

Para hacer la relacion la instrucciónes son:
ALTER TABLE Rol DROP PRIMARY KEY(DiaSalida,HoraSalida,FechaMod ),ADD CONSTRAINT ui_IdRol_DiaSalida_Hora Salida_Fecha: UNIQUE INDEX(IdRol,DiaSalida,HoraSaida,FechaMod);
ALTER TABLE HistorialAutobus DROP COLUMN DiaSalida,DROP COLUMN HoraSalida,DROP COLUMN FechaModRol,ADD FOREIGN KEY(IdRol) REFERENCES Rol(IdRol) ON DELETE RESTRICT ON UIPDATE CASCADE ;

Los campos de la relación deden ser del mismo tipo de dato.
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