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

Foreign Key en MySQl, por q me deja hacer el siguiente insert??

Estas en el tema de Foreign Key en MySQl, por q me deja hacer el siguiente insert?? en el foro de Bases de Datos General en Foros del Web. Hola , tengo dos tablas : CREATE TABLE Persona( id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, name CHAR(60) NOT NULL, PRIMARY KEY (id) ); CREATE TABLE ...
  #1 (permalink)  
Antiguo 26/12/2004, 14:23
 
Fecha de Ingreso: diciembre-2004
Mensajes: 94
Antigüedad: 19 años, 5 meses
Puntos: 0
Foreign Key en MySQl, por q me deja hacer el siguiente insert??

Hola , tengo dos tablas :

CREATE TABLE Persona(
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
name CHAR(60) NOT NULL,
PRIMARY KEY (id)
);

CREATE TABLE Carro (
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
name CHAR(60) NOT NULL,
owner SMALLINT UNSIGNED NOT NULL REFERENCES Persona(id),
PRIMARY KEY (id)
);


se supone que owner es una llave foranea que hace referencia al atributo id de la tabla Persona, ahora hago un par de inserts

insert into Persona(name) values ("Miguel")
insert into Persona(name) values ("Manuel")

por lo que al hacer hacer un "select * from Persona " me daria :

codigo nombre
1 Miguel
2 Manuel

El problema es q se supone que si en la tabla carro que tiene el atruibuto owner hacieno referencia al atributo id de la tabla Persona, si intentara insertar un dueño que no exista no me lo deberia permitir, me deberia arrojar un error de constraints verdad? pero no es asi y si me permite hacer un insert de este tipo:

insert into Carro(name,owner) values("BMW",10);

Cuando el owner 10 no existe en la tabla Persona..

a que se debe esto o q estoy haciendo mal?
  #2 (permalink)  
Antiguo 27/12/2004, 01:58
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Con MySQL, las restricciones de claves foráneas sólo funcionan si usas tablas INNODB. Porque hasta ahora no he hecho nada con este tipo de tablas y no lo he comprobado. Si lo contrario, con tablas MyIsam (por defecto) a las foreign key no les hace caso.
Un saludo.
__________________
Estoy contagiado de Generación-I
  #3 (permalink)  
Antiguo 18/08/2010, 14:36
 
Fecha de Ingreso: agosto-2010
Mensajes: 1
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Foreign Key en MySQl, por q me deja hacer el siguiente insert??

saludos tengo un problema parecido. tengo una tabla llamada personas (id, nombre) y otra llamada contratos (persona, contrato) donde contratos_personas tiene una foreing key en personas id. entonces si tengo una persona: 1111 hola. porque no puedo crearle un contrato con:
insert into contratos(persona, contrato) values (1111, 'profesor') ???
  #4 (permalink)  
Antiguo 18/08/2010, 15:17
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: Foreign Key en MySQl, por q me deja hacer el siguiente insert??

Cita:
Iniciado por gradiente Ver Mensaje
saludos tengo un problema parecido. tengo una tabla llamada personas (id, nombre) y otra llamada contratos (persona, contrato) donde contratos_personas tiene una foreing key en personas id. entonces si tengo una persona: 1111 hola. porque no puedo crearle un contrato con:
insert into contratos(persona, contrato) values (1111, 'profesor') ???
Bienvenido a FDW.

Primero: No cuelgues un post propio de uno ajeno. No es cortés y muno no abre los posts para ver el último sino para leer el prmiero, con lo que tu pregunta puede quedar sin respuesta.
Si tienes un problema, abre un tema nuevo.

Segundo: No resucites muertos. Este post tenía seis años (6), y los moderadores tienen por política cerrar los post que son reactivados así, con lo que te quedarás sin respuestas.

Tercero: Para poder responderte sería mejor que postees la sentencia CREATE TABLE.. de las dos tablas, porque el problema está allí. En alguna parte hay un error en la definición de la relación de las tablas, pero responderte con lo que planteas es demasiado abstracto. Necesitamos ver mejor los detalles.
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 10:51.