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

Problema con claves foráneas

Estas en el tema de Problema con claves foráneas en el foro de Mysql en Foros del Web. Bueeeeenaaaaaaaas!!! A ver si pueden ayudarme porque hace varios días que estoy atascado en un problemilla. Yo tengo la siguiente relación "asignaturas": Código: CREATE TABLE ...
  #1 (permalink)  
Antiguo 24/11/2007, 03:35
 
Fecha de Ingreso: febrero-2007
Mensajes: 23
Antigüedad: 17 años, 2 meses
Puntos: 0
Problema con claves foráneas

Bueeeeenaaaaaaaas!!!

A ver si pueden ayudarme porque hace varios días que estoy atascado en un problemilla.

Yo tengo la siguiente relación "asignaturas":

Código:
CREATE TABLE asignaturas (
  IdAsignatura varchar(20) NOT NULL default '',
  Titulacion varchar(50) NOT NULL default '',
  Ficha varchar(50) NOT NULL default '',
  PRIMARY KEY  (IdAsignatura,Titulacion)
) TYPE=InnoDB;
Y por otro lado quiero crear otra relación que tenga claves foráneas con respecto a esta relacion anterior.
ESTO NO FUNCIONA, me da un error de que no puedo crear la tabla:

Código:
CREATE TABLE reservas 
(
    IdAula varchar(12) NOT NULL,
    Fecha_res date NOT NULL,
    Hora_res time NOT NULL,
    Login varchar(15) default NULL,
    Motivo varchar(70) default NULL,
    IdAsignatura varchar(20) default NULL,
    Titulacion varchar(50) default NULL,
    PRIMARY KEY(IdAula,Fecha_res,Hora_res),
    FOREIGN KEY (IdAula) REFERENCES aulas(IdAula) ON DELETE CASCADE,
    FOREIGN KEY (Login) REFERENCES usuarios(Login) ON DELETE CASCADE,
    FOREIGN KEY (Titulacion) REFERENCES asignaturas(Titulacion) ON DELETE CASCADE,
    FOREIGN KEY (IdAsignatura) REFERENCES asignaturas(IdAsignatura) ON DELETE CASCADE
) TYPE = INNODB;
Y lo siguiente SI funciona. Lo único que hago es quitar una restriccion de clave foránea sobre el campo "Titulación":

Código:
CREATE TABLE reservas(
IdAula varchar( 12 ) NOT NULL ,
Fecha_res date NOT NULL ,
Hora_res time NOT NULL ,
Login varchar( 15 ) default NULL ,
Motivo varchar( 70 ) default NULL ,
IdAsignatura varchar( 20 ) default NULL ,
Titulacion varchar( 50 ) default NULL ,
PRIMARY KEY ( IdAula, Fecha_res, Hora_res ) ,
FOREIGN KEY ( IdAula ) REFERENCES aulas( IdAula ) ON DELETE CASCADE ,
FOREIGN KEY ( Login ) REFERENCES usuarios( Login ) ON DELETE CASCADE ,
FOREIGN KEY ( IdAsignatura ) REFERENCES asignaturas( IdAsignatura ) ON DELETE CASCADE
) TYPE = INNODB;
He comprobado que si lo hago al revés, si quito la restricción sobre el campo "IdAsignatura" y pongo la restricción únicamente sobre el campo "Titulacion" también me da error, o sea que es algo específico del campo "Titulacion".



Muchísimas gracias por vuestra ayuda !!
  #2 (permalink)  
Antiguo 24/11/2007, 05:18
 
Fecha de Ingreso: febrero-2007
Mensajes: 23
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Problema con claves foráneas

Ya encontré el problema. Me ha dejado hacerlo al poner las dos restricciones de clave foránea de la tabla "asignaturas" juntas en una sólo linea, así:

Código:
[...]

FOREIGN KEY ( IdAsignatura, Titulacion ) REFERENCES asignaturas( IdAsignatura, Titulacion ) ON DELETE CASCADE

[...]
Gracias de todas formassss!!!
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 00:53.