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

no puedo añadir clave foranea

Estas en el tema de no puedo añadir clave foranea en el foro de Mysql en Foros del Web. Hola. No entiendo esto. Sean dos tablas @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original create table EDITORIAL (    codEditorial   int ( 4 ) , ...
  #1 (permalink)  
Antiguo 13/04/2013, 13:57
 
Fecha de Ingreso: marzo-2012
Mensajes: 45
Antigüedad: 12 años
Puntos: 0
no puedo añadir clave foranea

Hola. No entiendo esto.
Sean dos tablas
Código MySQL:
Ver original
  1. create table EDITORIAL(
  2.    codEditorial   int(4),
  3.    nombre        varchar(25),
  4.    constraint pkEditorial PRIMARY KEY (codEditorial));
Código MySQL:
Ver original
  1. create table LIBRO (
  2.    codLibro   int(4),
  3.    titulo        varchar(25),
  4.    codEditorial   int(4),
  5.    constraint pkLibro PRIMARY KEY (codLibro));

Si a posteriori quiero crear una clave foránea con

Código MySQL:
Ver original
  1. alter table LIBRO add constraint FKLibro foreign key(codEditorial) references EDITORIAL(codEditorial);
funciona sin problemas...

pero sin haber hecho lo último y si antes he metido datos en ambas tablas y luego intento hacer la instrucción anterior para crear la clave foránea dá error ¿porqué? No violo ninguna restricción ¿no?

Gracias gente.

Última edición por gnzsoloyo; 13/04/2013 a las 16:06 Razón: Mal etiquetado
  #2 (permalink)  
Antiguo 13/04/2013, 16:07
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: no puedo añadir clave foranea

Cita:
pero sin haber hecho lo último y si antes he metido datos en ambas tablas y luego intento hacer la instrucción anterior para crear la clave foránea dá error ¿porqué? No violo ninguna restricción ¿no?
Pues si, evidentemente violas una restricción: Al menos un libro tiene un código de editorial ingresado que no existe en la tabla de editoriales, o bien es nulo. Y eso no es válido.
Vacía las tablas, crea la FK y prueba llenar los datos.
__________________
¿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 17/04/2013, 08:45
 
Fecha de Ingreso: marzo-2012
Mensajes: 45
Antigüedad: 12 años
Puntos: 0
Respuesta: no puedo añadir clave foranea

Tenías razón violo una restricción con los datos.
Gracias.
  #4 (permalink)  
Antiguo 20/04/2013, 11:05
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 2 meses
Puntos: 17
Respuesta: no puedo añadir clave foranea

Exacto estas haciendo esa operación la cual viola una restricción, ya que como ves si insertas datos en la tabla LIBROS estos hacen referencia a un código de Editorial el cual no existe o es nulo,
También puedes hacer uso de programas que te elaboran la sintaxis correctamente de la creación de tablas, ejemplo el Power Designer.
Aunque claro esta, es precioso entender y saber hacer a mano la BD con sus respectivas tablas. jeje Saludos!..
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1

Etiquetas: clave, 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 14:03.