Estoy haciendo una aplicación en la que tengo una base de datos con dos tablas llamadas
usuario y
roles, en las que un campo de
usuario es clave ajena/foranea de otro campo de
roles, pero cuando hago un insert en roles me da el siguiente error:
Cannot add or update a child row: a foreign key constraint fails (`logofiles/roles`, CONSTRAINT `roles_ibfk_1` FOREIGN KEY (`clave`) REFERENCES `usuario` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE).
El esquema de la base de datos es el siguiente:
Código:
CREATE TABLE IF NOT EXISTS `roles` (
`clave` int(11) NOT NULL auto_increment,
`usuario` int(11) NOT NULL,
`acceso` int(11) NOT NULL,
PRIMARY KEY (`clave`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
CREATE TABLE IF NOT EXISTS `usuario` (
`ID` int(11) NOT NULL auto_increment,
`nombre` varchar(100) NOT NULL,
`user` varchar(50) NOT NULL,
`pass` varchar(50) NOT NULL,
`correo` varchar(100) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `usuario` (`user`,`correo`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;
ALTER TABLE `roles`
ADD CONSTRAINT `roles_ibfk_1` FOREIGN KEY (`clave`) REFERENCES `usuario` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE;
El campo
ID de la tabla
usuario es la clave ajena/foranea y debe coincidir con el campo
usuario de la tabla
roles. La tabla
roles la uso para definir el tipo de acceso que tenga cada usuario (administrador o usuario normal).
La inserción la hago primero en la tabla
usuario y luego en la tabla
roles, pero me da el error comentado, ¿alguien podría echarme una mano?