Foros del Web » Programando para Internet » PHP »

Como modificar un valor foráneo?

Estas en el tema de Como modificar un valor foráneo? en el foro de PHP en Foros del Web. hola, estoy tratando de modificar el nombre de unas categorias en mi BD con el siguiente código: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original $query = ...
  #1 (permalink)  
Antiguo 22/10/2011, 08:42
Avatar de ras_chalo  
Fecha de Ingreso: junio-2010
Mensajes: 369
Antigüedad: 13 años, 10 meses
Puntos: 6
Pregunta Como modificar un valor foráneo?

hola, estoy tratando de modificar el nombre de unas categorias en mi BD con el siguiente código:

Código MySQL:
Ver original
  1. $query=mysql_query("UPDATE categorias SET id_categ = '$categ_nueva' WHERE  id_categ =  '$categ_antigua'");
:

me resulta modificar los nombres de las categorias que no tienen productos, pero las que si tienen, me devuelve el siguiente error:

Código MySQL:
Ver original
  1. Cannot delete or update a parent row: a foreign key constraint fails (`prueba_web/productos`, CONSTRAINT `productos_ibfk_1` FOREIGN KEY (`id_categ`) REFERENCES `categorias` (`id_categ`))

En la tabla "categorias" la key es "id_categ" que es foránea para la tabla "productos".

Cómo puedo solucionar esto sin necesidad de eliminar la tabla y dejarla suelta sin unirla con productos??

Espero sus respuestas
Saludos!
  #2 (permalink)  
Antiguo 22/10/2011, 08:45
 
Fecha de Ingreso: octubre-2011
Ubicación: USA
Mensajes: 166
Antigüedad: 12 años, 6 meses
Puntos: 19
Respuesta: Como modificar un valor foráneo?

si id_categ es una llave foranea y tratas de ponerle un valor que no existe en la tabla original es por eso que te da ese error verifica que el valor que estas tratando de update existe en la tabla donde id_categ es primary key.

Saludos
  #3 (permalink)  
Antiguo 22/10/2011, 08:56
Avatar de ras_chalo  
Fecha de Ingreso: junio-2010
Mensajes: 369
Antigüedad: 13 años, 10 meses
Puntos: 6
Respuesta: Como modificar un valor foráneo?

Cita:
Iniciado por shaserUsa Ver Mensaje
si id_categ es una llave foranea y tratas de ponerle un valor que no existe en la tabla original es por eso que te da ese error verifica que el valor que estas tratando de update existe en la tabla donde id_categ es primary key.

Saludos
mmm pero estoy intentando modificar la llave primaria, no la foránea. de hecho si te fijas intento hacerlo en la tabla "categorias".
fijate en el UPDATE...
  #4 (permalink)  
Antiguo 22/10/2011, 09:03
 
Fecha de Ingreso: octubre-2011
Ubicación: USA
Mensajes: 166
Antigüedad: 12 años, 6 meses
Puntos: 19
Respuesta: Como modificar un valor foráneo?

Bueno el problema puede ser entonces que si tienes la tabla categorias enlazada con otra tabla y tratas de modificar la primary key no te va dejar porque en la tabla con la cual esta enlazada categorias de puede ser productos existe la llave primaria que estas tratando de modificar como foranea, es una mala practica modificar las llaves primarias, si lo necesitas por alguna razon crea nuevas categorias con las llaves primarias que quieres actualiza esas llaves donde estan como foranea y despues borras las que ya no quieres.

Saludos
  #5 (permalink)  
Antiguo 22/10/2011, 09:15
Avatar de ras_chalo  
Fecha de Ingreso: junio-2010
Mensajes: 369
Antigüedad: 13 años, 10 meses
Puntos: 6
Respuesta: Como modificar un valor foráneo?

Cita:
Iniciado por shaserUsa Ver Mensaje
Bueno el problema puede ser entonces que si tienes la tabla categorias enlazada con otra tabla y tratas de modificar la primary key no te va dejar porque en la tabla con la cual esta enlazada categorias de puede ser productos existe la llave primaria que estas tratando de modificar como foranea, es una mala practica modificar las llaves primarias, si lo necesitas por alguna razon crea nuevas categorias con las llaves primarias que quieres actualiza esas llaves donde estan como foranea y despues borras las que ya no quieres.

Saludos
Muchas gracias amigo!!
ya se lo que tengo que hacer

gracias nuevamente por tu tiempo!
saludos!!!

Etiquetas: modificar, sql, 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 08:18.