Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/11/2012, 12:37
JamesWhannel
 
Fecha de Ingreso: septiembre-2012
Mensajes: 26
Antigüedad: 11 años, 7 meses
Puntos: 2
Llaves foraneas para agregar datos a una tabla

Hola, necesito ayuda con la creación de unas tablas y sus respectivas llaves foraneas en MySQL.

Tengo la tabla Evaluador y Seccion.

Seccion forma parte de un examen completo que es revisado por varios Evaluadores por lo tanto un Evaluador solo puede evaluar 1 seccion y 1 seccion solo puede ser evaluada por 1 profesor.

Al momento de ingresar mediante un formulario los datos de las secciones se coloca el Nombre y el Id del Evaluador que la va a calificar asi que para crear la tabla lo hice asi:


Código MySQL:
Ver original
  1. CREATE  TABLE IF NOT EXISTS Secciones (
  2. `IdSeccion` INT NOT NULL AUTO_INCREMENT ,
  3. `Nombre` VARCHAR(45) NOT NULL ,
  4. `IdEvaluador` INT NOT NULL ,
  5. PRIMARY KEY (`IdSeccion`) ,
  6. CONSTRAINT `IdEvaluador`
  7. FOREIGN KEY (`IdEvaluador` )
  8. REFERENCES `mydb`.`Evaluadores` (`IdEvaluador` )


Para ingresar en otro formulario los datos del Evaluador se coloca el Nombre, y por medio de una lista desplegable y una consulta SQL le muestro el Nombre de la tabla Seccion para almacenar el Id de la Seccion aqui:


Código MySQL:
Ver original
  1. CREATE  TABLE IF NOT EXISTS Evaluadores (
  2. `IdEvaluador` INT NOT NULL AUTO_INCREMENT ,
  3. `Nombre` VARCHAR(45) NOT NULL ,
  4. `IdSeccion` INT NOT NULL ,
  5. PRIMARY KEY (`IdEvaluador`) ,
  6. CONSTRAINT `IdSeccion`
  7. FOREIGN KEY (`IdSeccion` )
  8. REFERENCES `mydb`.`Secciones` (`IdSeccion` )


Por lo tanto, primero estoy llenando la tabla Seccion para que asi al momento de agregar Evaluadores pues la lista desplegable tenga un contenido, el problema es que a la hora de agregar un Evaluador desde el formulario ingresando el Nombre y eligiendo la seccion de la lista desplegable me dice:


Cannot add or update a child row: a foreign key constraint fails (`mydb`.`evaluadores`, CONSTRAINT `evaluadores_ibfk_1` FOREIGN KEY (`IdSeccion`)
REFERENCES `secciones` (`IdSeccion`) ON DELETE CASCADE ON UPDATE CASCADE)



Creo que eso me indica que establecí mal alguna relacion pero
no se cual, o quizá me faltó establecer otra con los otros campos no se, espero
se haya entendido, gracias

Última edición por gnzsoloyo; 15/11/2012 a las 12:39 Razón: SQL sin etiquetar.