Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Fallo al eliminar fila con referencia a otra tabla

Estas en el tema de Fallo al eliminar fila con referencia a otra tabla en el foro de Mysql en Foros del Web. Hola, Resulta que tengo estas dos tablas(bueno,tengo mas ,pero estas son las que tiene problemas) Tabla Oferta @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original CREATE TABLE ...
  #1 (permalink)  
Antiguo 31/05/2013, 08:41
 
Fecha de Ingreso: diciembre-2012
Mensajes: 26
Antigüedad: 11 años, 3 meses
Puntos: 0
Fallo al eliminar fila con referencia a otra tabla

Hola,

Resulta que tengo estas dos tablas(bueno,tengo mas ,pero estas son las que tiene problemas)

Tabla Oferta
Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `Oferta` (
  2.   `oferta_id` INT(11) NOT NULL AUTO_INCREMENT,
  3.   `categoria_id` INT(11) NOT NULL,
  4.   `descripcion` VARCHAR(120) NOT NULL,
  5.   `titulo` VARCHAR(30) NOT NULL,
  6.   `fecha_inicio` DATE NOT NULL,
  7.   `fecha_fin` DATE NOT NULL,
  8.   `empresa_id` INT(11) NOT NULL,
  9.   `lugar` VARCHAR(40) NOT NULL,
  10.   PRIMARY KEY (`oferta_id`),
  11.   KEY `Oferta_ibfk_1` (`categoria_id`),
  12.   KEY `Oferta_ibfk_2` (`empresa_id`)
  13. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
  14.  
  15. INSERT INTO `Oferta` (`oferta_id`, `categoria_id`, `descripcion`, `titulo`, `fecha_inicio`, `fecha_fin`, `empresa_id`, `lugar`) VALUES
  16. (1, 1, 'Desarrollador web en PHP', 'Programador', '0000-00-00', '0000-00-00', 1, 'Silicon Valley');
  17.  
  18. ALTER TABLE `Oferta`
  19.   ADD CONSTRAINT `Oferta_ibfk_1` FOREIGN KEY (`categoria_id`) REFERENCES `Categoria` (`categoria_id`),
  20.   ADD CONSTRAINT `Oferta_ibfk_2` FOREIGN KEY (`empresa_id`) REFERENCES `Empresa` (`empresa_id`);

Tabla Inscrito

Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `Inscrito` (
  2.   `oferta_id` INT(11) NOT NULL,
  3.   `alumno_id` INT(11) NOT NULL,
  4.   PRIMARY KEY (`oferta_id`,`alumno_id`),
  5.   KEY `Inscrito_ibfk_2` (`alumno_id`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  7.  
  8.  
  9. INSERT INTO `Inscrito` (`oferta_id`, `alumno_id`) VALUES
  10. (1, 9);
  11.  
  12.  
  13. ALTER TABLE `Inscrito`
  14.   ADD CONSTRAINT `Inscrito_ibfk_1` FOREIGN KEY (`oferta_id`) REFERENCES `Oferta` (`oferta_id`),
  15.   ADD CONSTRAINT `Inscrito_ibfk_2` FOREIGN KEY (`alumno_id`) REFERENCES `Alumno` (`alumno_id`);
Al intentar eliminar de la tabla Oferta una fila me da el siguiente error:

Cannot delete or update a parent row: a foreign key constraint fails (`adminjobs`.`Inscrito`, CONSTRAINT `Inscrito_ibfk_1` FOREIGN KEY (`oferta_id`) REFERENCES `Oferta` (`oferta_id`))

A ver si alguien me puede ayudar.


Saludos y Gracias
  #2 (permalink)  
Antiguo 31/05/2013, 08:59
Avatar de 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: Fallo al eliminar fila con referencia a otra tabla

Cuando existe una dependencia de ese tipo, sólo puedes borrar el registro base si suprimes también el registro que usa esa PK como FK
No hay otra posibilidad. Por eso se llama "restricción de integridad referencial".
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 31/05/2013, 11:33
 
Fecha de Ingreso: diciembre-2012
Mensajes: 26
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Fallo al eliminar fila con referencia a otra tabla

Claro,la idea seria que si elimino la oferta,tambien elimino las suscripciones.
Si no me equivoco seria con un ON DELETE CASCADE ¿no? ,pero en que tabla?

Saludos y Gracias
  #4 (permalink)  
Antiguo 31/05/2013, 11:45
Avatar de 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: Fallo al eliminar fila con referencia a otra tabla

En la que tiene la FK, obviamente... Si lees el manual esa cláusula pertenece únicamente a la definición de la FK
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: fallo, fila, insert, php, referencia, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:09.