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

Inserción de registros en tabla con llaves foráneas

Estas en el tema de Inserción de registros en tabla con llaves foráneas en el foro de Mysql en Foros del Web. Hola, espero me puedan orientar. Me inscribí a un diplomado y debo entregar tarea pero no puedo avanzar porque tengo el siguiente problema: necesito ingresar ...
  #1 (permalink)  
Antiguo 18/12/2009, 15:49
Nor
 
Fecha de Ingreso: diciembre-2009
Mensajes: 1
Antigüedad: 14 años, 4 meses
Puntos: 0
Inserción de registros en tabla con llaves foráneas

Hola, espero me puedan orientar. Me inscribí a un diplomado y debo entregar tarea pero no puedo avanzar porque tengo el siguiente problema: necesito ingresar registros en una tabla con llaves foráneas pero me arroja el siguiente error:

Cannot add or update a child row: a foreign key constraint fails (`universidad`.`horarios`, CONSTRAINT `horarios_ibfk_2` FOREIGN KEY (`Grupo`) REFERENCES `horarios` (`Grupo`))



Considerando que la tabla la generé así:

Create table HORARIOS (NumMat char(5) not null,
Grupo char(1) not null,
NumProf char(5),
Dia char(2),
Hora char (5),
Salon char(3),
primary key (NumMat,Grupo),
foreign key (NumMat) references Materia(NumMat),
foreign key (Grupo) references Horarios(Grupo));

Quiero insertar el siguiente registro:

Insert into Horarios values ('22101','A','10001','LU','9:00','A1');

al ejecutar me envía el error que arriba comenté.
  #2 (permalink)  
Antiguo 18/12/2009, 16:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Inserción de registros en tabla con llaves foráneas

Esta tabla:
Código MySQL:
Ver original
  1. CREATE TABLE HORARIOS
  2.     (NumMat char(5) not null,
  3.     Grupo char(1) not null,
  4.     NumProf char(5),
  5.     Dia char(2),
  6.     Hora char (5),
  7.     Salon char(3),
  8.     primary key (NumMat,Grupo),
  9.     foreign key (NumMat) references Materia(NumMat),
  10.     foreign key (Grupo) references Horarios(Grupo));
Es una tabla imposible: Estás definiendo como FK de la tabla a un campo, pero referenciandoló a la PK de la misma tabla, que a su vez es una PK de dos campos (una FK se referencia ala PK completa y no a parte de ella).
Eso es imposible, porque para insertar un registro debería previamente existir el valor en la tabla, y no puede existir porque para ello deberías haber podido ingresar ese mismo registro, que no puede ingresar porque no cumple con la restricción de FK... y así hasta la eternidad.
Para que esto te funcione, esto:
Código MySQL:
Ver original
  1. foreign key (Grupo) references Horarios(Grupo)
debería, en todo caso, estar refiriéndose a una clave en la tabla GRUPOS, y no en HORARIOS.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 16:19.