
Cannot delete or update a parent row: a foreign key constraint fails
Publicado por anonymous (5 intervenciones) el 26/06/2016 03:07:12
Hola gente del foro, Bueno la cursada de la facultad del seminario de PHP es un desastre, no explican ni la mitad de las cosas, es como aprender por uno mismo en internet, de hecho asi llevo hecho casi el 75% de un proyecto que tengo que entregar el 1.
Ahora me encontre con un problema que no puedo resolver, ni buscando por todos lados, dado que todavia no curse Base de Datos.
Tengo que eliminar una categoria de un producto, el cual es una clave foranea. y me tira el error:
Cannot delete or update a parent row: a foreign key constraint fails (`grupo36`.`productos`, CONSTRAINT `productos_ibfk_1` FOREIGN KEY (`idCategoriaProducto`) REFERENCES `categorias_productos` (`idCategoriaProducto`))
Les dejo el modulo encargado de eliminar la categoria.
Tables_in_grupo36
categorias_productos
productos
usuarios
idCategoriaProducto nombre
1 hogar
2 electronica
3 deportes
4 electricidad
Desde ya muchísimas gracias!!!!
Si no lo que se me acaba de ocurrir es si me permite eliminar todos los registros de los productos con dicha clave foranea con un
Esa seria la forma de eliminar la foreign key sin saltear ningun nivel de seguridad en la BD?
Mil gracias.
Ahora me encontre con un problema que no puedo resolver, ni buscando por todos lados, dado que todavia no curse Base de Datos.
Tengo que eliminar una categoria de un producto, el cual es una clave foranea. y me tira el error:
Cannot delete or update a parent row: a foreign key constraint fails (`grupo36`.`productos`, CONSTRAINT `productos_ibfk_1` FOREIGN KEY (`idCategoriaProducto`) REFERENCES `categorias_productos` (`idCategoriaProducto`))
Les dejo el modulo encargado de eliminar la categoria.
1
2
3
4
5
6
7
8
9
10
/**
* Elimina la categoria pasada por parametro de la BD
* @param $categoria
*/
function eliminarCategoria($categoria){
$connect = conectar();
$query = "DELETE FROM categorias_productos WHERE idCategoriaProducto='$categoria'";
mysqli_query($connect,$query) or die(mysqli_error($connect));
mysqli_close($connect);
}
Tables_in_grupo36
categorias_productos
productos
usuarios
idCategoriaProducto nombre
1 hogar
2 electronica
3 deportes
4 electricidad
Desde ya muchísimas gracias!!!!
Si no lo que se me acaba de ocurrir es si me permite eliminar todos los registros de los productos con dicha clave foranea con un
1
2
3
4
5
6
7
8
9
$query = "SELECT * FROM categorias_productos WHERE idCategoriaProducto = '$idCategoria'";
$borrar = "DELETE FROM productos WHERE idCategoriaProducto = '$idCate'";
$result = mysqli_query($connect,$query);
while ($row = mysqli_fetch_assco($result)){
$idCate = $row['idCategoriaProducto'];
mysqli_query($connect,$borrar);
}
//AHORA SI BORRAR EL FOREIGN KEY
mysqli_query($connect,"DELETE FROM categorias_productos WHERE idCategoriaProducto = '$idCategoria'");
Esa seria la forma de eliminar la foreign key sin saltear ningun nivel de seguridad en la BD?
Mil gracias.
Valora esta pregunta


0