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

Clave foranea sale NULL

Estas en el tema de Clave foranea sale NULL en el foro de Mysql en Foros del Web. tengo la siguiente base sql cuando hago la consulta en el localhost phpMyAdmin me crea la base pero en la tabla personas la clave foranea ...
  #1 (permalink)  
Antiguo 26/05/2012, 14:34
 
Fecha de Ingreso: agosto-2005
Mensajes: 97
Antigüedad: 18 años, 8 meses
Puntos: 1
Clave foranea sale NULL

tengo la siguiente base sql cuando hago la consulta en el localhost phpMyAdmin me crea la base pero en la tabla personas la clave foranea TIPO me sale NULL en todos los registros, no descubro que es lo que estoy haciendo mal para que salga null, soy apenas principiante en esto y seguro que es algo que no estoy sabiendo hacer bien...

CREATE DATABASE IF NOT EXISTS datos;
USE datos;

CREATE TABLE sexo(
ID_SEXO TINYINT (1) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
VALOR VARCHAR (20)
);


CREATE TABLE personas(
ID_PERSONAS TINYINT (1) UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
NOMBRE VARCHAR (50),
TIPO TINYINT (1) UNSIGNED ,
FOREIGN KEY (TIPO) REFERENCES sexo (ID_SEXO)
);


INSERT INTO sexo (VALOR)
VALUES ( 'masculino');
INSERT INTO sexo (VALOR)
VALUES ('femenino');


INSERT INTO personas (NOMBRE)
VALUES('German');
INSERT INTO personas (NOMBRE)
VALUES('Gaston');
INSERT INTO personas (NOMBRE)
VALUES('Laura');
INSERT INTO personas (NOMBRE)
VALUES('Andres');
INSERT INTO personas (NOMBRE)
VALUES('Lucia');
  #2 (permalink)  
Antiguo 26/05/2012, 17:43
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: Clave foranea sale NULL

Es posible que sea un error conceptual... Bastante habitual en los principiantes.

Entendamos primero que una foreign key existe para asegurar la integridad referencial, esto es, que no pueda ser ingresado en ese campo un valor que no exista previamente en la tabla referenciada (aquella a la que se apunta).
Pero el hecho de que declares una FK en una tabla no significa que un valor de la tabla referida vaya a ser asignado automáticamente y sin intervención del usuario a la FK. No. Lo único que hace es asegurarse que no metan la pata y le pongan un valor no válido.
¿Se entiende?

Esto significa que eres tú el que tiene que asignar ese valor al campo que es FK, cuando haces un INSERT o UPDATE en esa tabla. Y eso es precisamente lo que no estás haciendo.

Ningún DBMS pone automáticamente el valor de la FK tomándolo de la tabla base, porque eso es imposible. Si la tabla referida tuviese 10.000 registros, ¿cómo haría el sistema para saber cuál de los 10.000 valores tiene que poner. ¿No te parece?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: clave, 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 00:55.