Tema: FK duda
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/05/2013, 04:45
Avatar de rgf1987
rgf1987
 
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 4 meses
Puntos: 22
FK duda

Veamos, tengo la siguiente duda a la hora de actualizar una tabla en MYSQL, la tabla es la siguiente:

Código MySQL:
Ver original
  1. CREATE TABLE `articulos` (
  2.   `idArticulo` int(11) NOT NULL AUTO_INCREMENT,
  3.   `idAutor` int(11) NOT NULL,
  4.   `idEditor` int(11) DEFAULT '0',
  5.   `tituloArticulo` varchar(50) DEFAULT NULL,
  6.   `resumenArticulo` varchar(500) DEFAULT NULL,
  7.   `coautoresArticulo` varchar(500) DEFAULT NULL,
  8.   `imagenArticulo` varchar(50) DEFAULT NULL,
  9.   `pdfArticulo` varchar(200) DEFAULT NULL,
  10.   `estadoArticulo` int(11) DEFAULT '1',
  11.   `idVolumen` int(11) DEFAULT NULL,
  12.   PRIMARY KEY (`idArticulo`),
  13.   KEY `articulos_ibfk_2` (`estadoArticulo`),
  14.   KEY `articulos_ibfk_3` (`idVolumen`),
  15.   KEY `articulos_ibfk_1` (`idAutor`),
  16.   CONSTRAINT `articulos_ibfk_1` FOREIGN KEY (`idAutor`) REFERENCES `usuarios` (`idUsuario`) ON DELETE CASCADE,
  17.   CONSTRAINT `articulos_ibfk_2` FOREIGN KEY (`estadoArticulo`) REFERENCES `estados` (`idEstado`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  18.   CONSTRAINT `articulos_ibfk_3` FOREIGN KEY (`idVolumen`) REFERENCES `volumenes` (`idVolumen`) ON DELETE NO ACTION ON UPDATE NO ACTION

El problema esta en el campo idVolumen, si intento insertar un nuevo articulo el idVolumen nose lo indico y me inserta perfectamente.

Pero si despues quiero actualizar, lo tengo hecho de la siguiente manera:
Cita:
Editado: Código de programación no permitido en foros de BBDD.
Esto me lanza un error de tipo:
Cita:
Estado HTTP 500 - Request processing failed; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityCons traintViolationException: Cannot add or update a child row: a foreign key constraint fails (`todomotor`.`articulos`, CONSTRAINT `articulos_ibfk_3` FOREIGN KEY (`idVolumen`) REFERENCES `volumenes` (`idVolumen`) ON DELETE NO ACTION ON UPDATE NO ACTION)
Porque la variable "INT idVolumen" contiene un 0 y al intentar insertar un 0 no existe dicho volumen en la tabla asociada....

Cual es la solucion correcta??
Implementar dos metodos para actualizar uno actualizando el volumen y otro no??

Un ayuda por favor :( me lio mucho con estas cosas!!!

Última edición por gnzsoloyo; 24/05/2013 a las 06:23 Razón: Código de programación no permitido en foros de BBDD.