Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/06/2011, 08:49
toni_
 
Fecha de Ingreso: abril-2008
Mensajes: 7
Antigüedad: 16 años, 1 mes
Puntos: 0
Problemas con Foreign Key

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?