Cómo agregar clave externa (MySQL)
Soy extremadamente nuevo en SQL e intento realizar una ALTER TABLE simple para crear una nueva columna y usarla como clave externa para hacer referencia a otra tabla simple en mi base de datos. He alterado ambas tablas para que sean InnoDB.
Sin embargo, al ejecutar el código ALTER TABLE, aparece el siguiente error:
Error 1452 Cannot add or update a child row:
a foreign key constraint fails (`toys`.<result 2 when
explaining filename '#sql-6d4_6'>, CONSTRAINT
`#sql-6d4_6_ibfk_1` FOREIGN KEY (`toy_id`) REFERENCES `toys` (`toy_id`))
A continuación se presentan los DESC de ambas tablas:
Tabla 1:
FIELD TYPE NULL KEY EXTRA
toy_id int(11) NO PRI auto_increment
toy varchar(50) YES
Tabla 2:
FIELD TYPE NULL KEY EXTRA
boy_id int(11) NO PRI auto_increment
boy varchar(50) YES
Y esta es la consulta ALTER que estaba tratando de realizar:
ALTER TABLE boys
ADD COLUMN toy_id INT NOT NULL,
ADD CONSTRAINT toys_toy_id_fk
FOREIGN KEY(toy_id)
REFERENCES toys(toy_id);
He mirado por todos lados tratando de resolverlo, pero sin suerte. Gracias de antemano, y por favor sean amables con este novato :)
EDITAR:
Aquí están las tablas de SHOW CREATE para ambas tablas:
TABLA 1:
CREATE TABLE `toys` (
`toy_id` int(11) NOT NULL AUTO_INCREMENT,
`toy` varchar(50) DEFAULT NULL,
PRIMARY KEY (`toy_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
TABLA 2:
CREATE TABLE `boys` (
`boy_id` int(11) NOT NULL AUTO_INCREMENT,
`boy` varchar(50) DEFAULT NULL,
PRIMARY KEY (`boy_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8