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

se podra auto_increment en claves foraneas

Estas en el tema de se podra auto_increment en claves foraneas en el foro de Mysql en Foros del Web. para que exista un hijo debe existir un padre,por lo cual ocupo cod_padre como foranea en la tabla hijos,para crear la relacion. Al momento de ...
  #1 (permalink)  
Antiguo 04/06/2007, 15:14
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
se podra auto_increment en claves foraneas

para que exista un hijo debe existir un padre,por lo cual ocupo cod_padre como foranea en la tabla hijos,para crear la relacion.

Al momento de ocupar el volcado sql me arroja el siguiente error:
Código:
 MySQL ha dicho: Documentación
#1075 - Incorrect table definition; 
there can be only one auto column 
and it must be defined as a key
leyendo en google encontre que ese problema se debe a que auto_increment solo funciona con claves primarias.
existira alguna forma de utilizarlo con claves foraneas?
gracias

Código PHP:
drop database if exists familia;
create database familia;
use 
familia;

drop table if exists HIJOS;

drop table if exists PADRE;


create table HIJOS
(
   
COD_HIJOS                INT(11not null AUTO_INCREMENT,
   
COD_PADRE                    INT(11)  AUTO_INCREMENT,
   
NOMBRE                         CHAR(60),
   
primary key (COD_HIJOS)
)
type InnoDB;

create table PADRE
(
   
COD_PADRE                   INT(11)AUTO_INCREMENT          not 

null
,
   
NOMBRE                    CHAR(60),
    
EDAD                          CHAR(30),
   
primary key (COD_PADRE)
)
type InnoDB;

alter table HIJOS add constraint FK_PADRE foreign key (COD_PADRE)
      
references PADRE(COD_PADREon delete restrict on update 

restrict

pd:son mas campos,pero hice un resumen :p
  #2 (permalink)  
Antiguo 04/06/2007, 15:32
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Re: se podra auto_increment en claves foraneas

Es que... no tiene sentido usar autoincrement, dado que la gracia de la clave foranea es que esté definida en la tabla que referencia, que exista allí antes, no que la generes a tú conveniencia.
Es decir, primero se crea el padre, luego se le asignan hijos.
  #3 (permalink)  
Antiguo 26/06/2007, 10:51
 
Fecha de Ingreso: julio-2004
Mensajes: 117
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: se podra auto_increment en claves foraneas

Una clave foránea tiene que apuntar a una clave primaria existente (integridad referencial).

Como bien dice claudiovega primero tienes que tener un padre creado. Ese padre tendrá una clave primaria (la puedes generar con autoincrement o poner un identificador del tipo que quieras, siempre que evidentemente no se repita en la tabla). Cuando crees un hijo, como clave primaria puedes ponerle un autoincrement o cualquier discriminador, pero como clave foránea debes ponerle la clave primaria de un padre que ya exista para establecer la relación.

Como tu lo haces podrias tener un padre con PK_padre=1 y 2 hijos suyos que apunten al FK_padre=1 y al FK_padre=2, cuando el padre 2 no existe y es más, el padre de los 2 es el mismo (FK_padre=1). No es muy lógico verdad?

Espero que te sirva para entenderlo.
Un saludo.
  #4 (permalink)  
Antiguo 28/06/2007, 12:29
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 9 meses
Puntos: 70
Exclamación Re: se podra auto_increment en claves foraneas

Hola -thor-!

Es que decir que una foránea puede ser autoincrementable es decir que tu DB no tiene integridad referencial y no creo que quieras eso no??

Pues creo que esa idea....

Saludos!
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
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 01:04.