Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/06/2013, 19:15
Avatar de gnzsoloyo
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, 4 meses
Puntos: 2658
Respuesta: foreign key constraint NO ENTIENDO NADA

Declaraste como UNIQUE el campo de region_id en a tabla país, por lo que no puedes usar el mismo valor para dos países distintos.
Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `pais` (
  2.   `id_pais` INT(11) NOT NULL AUTO_INCREMENT,
  3.   `id_region` INT(11) NOT NULL,
  4.   `descripcion` VARCHAR(60) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  5.   PRIMARY KEY (`id_pais`),
  6.   UNIQUE KEY `id_region` (`id_region`)

Para China:
Código MySQL:
Ver original
  1. INSERT INTO `pais` (`id_pais`, `id_region`, `descripcion`) VALUES
  2. (1, 1, 'China');

Y para Rusia:
Código MySQL:
Ver original
  1. INSERT INTO `pais` (`id_pais`, `id_region`, `descripcion`) VALUES
  2. (NULL, 1, 'Rusia');
Es un problema de diseño. Esencialmente estás creando dos tipos de clave diferente para la misma tabla: La PK y una clave alternativa. Una de las dos está de más.

Si el país pertenece a una región, entonces region_id, no debe ser UNIQUE sino FK de otra tabla, cosa completamente diferente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)