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

[SOLUCIONADO] Convertir campo en lláve foránea

Estas en el tema de Convertir campo en lláve foránea en el foro de Mysql en Foros del Web. Según el manual para crear una lláve foránea en MySQL hago esto: Código PHP: ALTER TABLE tabla1  ADD CONSTRAINT nombreclaveforanea  FOREIGN KEY  ( campotabla1 )  REFERENCES tablaquereferencia  ( campoquereferencia )  ON DELETE NO ACTION  ...
  #1 (permalink)  
Antiguo 14/03/2016, 17:12
Avatar de bandolera  
Fecha de Ingreso: abril-2009
Mensajes: 613
Antigüedad: 15 años
Puntos: 7
Pregunta Convertir campo en lláve foránea

Según el manual para crear una lláve foránea en MySQL hago esto:
Código PHP:
ALTER TABLE tabla1 
ADD CONSTRAINT nombreclaveforanea 
FOREIGN KEY 
(campotabla1
REFERENCES tablaquereferencia (campoquereferencia
ON DELETE NO ACTION 
ON UPDATE NO ACTION 

Pero qué pasa si el campo ya existe y solo quiero indicar que ese campo será la llave foránea.??
__________________
Todos somos iguales. NO! a la violencia de género.
  #2 (permalink)  
Antiguo 14/03/2016, 17:14
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Convertir campo en lláve foránea

Ya probaste esa sentencia?? Ahi no esta agregando ninguna columna a la tabla, simplemente esta indicando que la columna campotabla1 va a hacer referencia a
campoquereferencia, lo que esta agregando es un "constraint" o "restriccion" que es la llave foranea ;), ademas en esa sentencia se supone que campotabla1 y campoquereferencia ya existen en las tablas implicadas
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 14/03/2016, 17:34
Avatar de bandolera  
Fecha de Ingreso: abril-2009
Mensajes: 613
Antigüedad: 15 años
Puntos: 7
Pregunta Respuesta: Convertir campo en lláve foránea

Cita:
Iniciado por Libras Ver Mensaje
Ya probaste esa sentencia?? Ahi no esta agregando ninguna columna a la tabla, simplemente esta indicando que la columna campotabla1 va a hacer referencia a
campoquereferencia, lo que esta agregando es un "constraint" o "restriccion" que es la llave foranea ;), ademas en esa sentencia se supone que campotabla1 y campoquereferencia ya existen en las tablas implicadas
Código HTML:
 #1005 - Can't create table 'base.#sql-1880_121' (errno: 150)
Leí y dice que las tablas deben existir, y sí existen.
También vi los tipos de campos y también están bien.
Por eso preguntaba.
__________________
Todos somos iguales. NO! a la violencia de género.
  #4 (permalink)  
Antiguo 14/03/2016, 18:02
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, 5 meses
Puntos: 2658
Respuesta: Convertir campo en lláve foránea

Una FK se referencia hacia la PK de otra tabla.
¿El campo a que quieres apuntar cumple el requisito?
¿Ya hay datos en ambas tablas?
__________________
¿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 15/03/2016, 15:30
Avatar de bandolera  
Fecha de Ingreso: abril-2009
Mensajes: 613
Antigüedad: 15 años
Puntos: 7
Respuesta: Convertir campo en lláve foránea

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Una FK se referencia hacia la PK de otra tabla.
¿El campo a que quieres apuntar cumple el requisito?
¿Ya hay datos en ambas tablas?
Ya lo solucioné. Aunque no estoy segura de cuál fue el problema.
Pero ambas tablas tienen datos.
Pero mi tabla tenía definidos las PK. Y los campos FK estaban como Unsigned cosa que no pasaba con el campo referenciado, así que quité las PK y quité los Unsigned.
Y ahora sí ya funciona.
Gracias.
__________________
Todos somos iguales. NO! a la violencia de género.

Etiquetas: campo, 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 22:34.