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

llave foranea

Estas en el tema de llave foranea en el foro de Mysql en Foros del Web. Hola quisiera saber si yo tengo una llave foranea en una tabla al momento de cambiar el valor de la tabla con la que esta ...
  #1 (permalink)  
Antiguo 27/02/2011, 16:22
Avatar de carlosloaiza21  
Fecha de Ingreso: julio-2009
Mensajes: 175
Antigüedad: 14 años, 8 meses
Puntos: 0
Exclamación llave foranea

Hola quisiera saber si yo tengo una llave foranea en una tabla al momento de cambiar el valor de la tabla con la que esta vinculada significara que automaticamente el valor cambiara en las dos tablas?????
__________________
La vida de un hombre es mas interesante si ha fracasado, por que eso quiere decir que ha intentado superarse
  #2 (permalink)  
Antiguo 27/02/2011, 16:34
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: llave foranea

SI y sólo si la FK se definió con ON UPDATE CASCADE, al ser modificada la PK en la tabla base, la tabla donde esa PK sea FK, el valor cambiará en los registros donde estaba el valor anterior. Caso contrario, no.
__________________
¿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 27/02/2011, 16:49
Avatar de carlosloaiza21  
Fecha de Ingreso: julio-2009
Mensajes: 175
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: llave foranea

Gracias lo que quiero hacer es: Tengo 2 tablas una de inventario y otra de productos en productos hay un campo llamado cantidad y en inventario uno que dice existencias entonces yo quiero que cuando en el inventario se modifique la cantidad tambien se modifique en productos

Saludos
__________________
La vida de un hombre es mas interesante si ha fracasado, por que eso quiere decir que ha intentado superarse
  #4 (permalink)  
Antiguo 27/02/2011, 18:06
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: llave foranea

Hay al menos cuatro formas de encarar el problema:
1) Hacerlo por medio de dos consultas distintas, cada una a su tabla pero usando el mismo valor de ID.
2) Hacer un UPDATE con un INNER JOIN entre ambas tablas (lo acabo de pensar, no se si alguien lo planteó antes, pero se me hace que hay que intentarlo.
3) Hacer la segunda actualización en un TRIGGER declarado en la primera tabla afectada.
4) Poner todo el proceso de dos consultas en un Stored Procedure.

Yo me inclinaría a probar algo así:
Código MySQL:
Ver original
  1. UPDATE inventario I INNER JOIN productos P ON I.producto_id = P.producto_id
  2. SET I.cantidad = valor, P.existencia = P.existencia + valor
  3. WHERE I.producto_id = idBuscado;
Te repito que no lo he probado antes, lo acabo de pensar recordando ciertas operaciones que hice en otras tablas hace tiempo y no sé si alguien propuso algo así alguna vez, pero creo que debería funcionar...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 27/02/2011, 18:43
Avatar de carlosloaiza21  
Fecha de Ingreso: julio-2009
Mensajes: 175
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: llave foranea

muchas gracias lo voy a probar de las tres formas muchas gracias saludos ahi te aviso como quedo y que tal queda
__________________
La vida de un hombre es mas interesante si ha fracasado, por que eso quiere decir que ha intentado superarse

Etiquetas: llave, foreignkey
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:50.