2017-10-02 2 views
0

J'essaye de créer une table appelée "Borrower" ou "Lånetagare" et je veux insérer la valeur de la table Lån avec l'ID à partir de là. Le résultat obtenu est NULL. Comment venir?La valeur de la clé étrangère MySQL est NULL

create table Lån 
(
Lån_ID INT auto_increment primary key, 
Lånedatum DATETIME, 
Inlämningsdatum DATETIME, 
Omlån DATETIME 
); 

INSERT INTO Lån (Lånedatum, Inlämningsdatum, Omlån) 

VALUES ('2017-09-12', '2017-09-15', '2017-09-15'); 

CREATE TABLE Lånetagare 
( 
Lånetagare_ID INT(10) auto_increment primary key, 
Lösenord varchar(50), 
Förnamn varchar(50), 
Efternamn varchar(50), 
Adress varchar (50), 
Ort varchar(50), 
Postnummer int(5), 
Email varchar(50), 
Telefonnummer int(20), 
Lånekort int(50), 
Lån_ID int(50), 
FOREIGN KEY (Lån_ID) REFERENCES Lån(Lån_ID) 
); 

INSERT INTO Lånetagare (Lösenord, Förnamn, Efternamn, Adress, Ort, Postnummer, Email, Telefonnummer, Lånekort) 
VALUES ('hej135', 'Victor', 'Chi', 'Blekingegatan 28', 'Stockholm', 11856, '[email protected]', 0704582235, 56); 

SELECT * FROM Lånetagare; 
+1

Vous n'insérez jamais Lan_ID dans votre deuxième instruction d'insertion, par conséquent le FK est nul car il ne vous est jamais assigné une valeur – Andrei

+0

ce que vous pouvez faire est d'ajouter ceci dans votre deuxième instruction d'insertion afin qu'il comprenne ' insérer dans Lånetagare (Lån_ID) Values ​​(LAST_INSERT_ID()) 'dans mysql qui va insérer le dernier auto_increment lire plus [ici] (https://dev.mysql.com/doc/refman/5.7/fr/information-functions.html # function_last-insert-id) – Andrei

+0

https://stackoverflow.com/a/24423795/3404097 – philipxy

Répondre

0

Essayez

INSERT INTO Lånetagare (Lösenord, Förnamn, Efternamn, Adress, Ort, Postnummer, Email, Telefonnummer, Lånekort, Lån_ID) 
VALUES ('hej135', 'Victor', 'Chi', 'Blekingegatan 28', 'Stockholm', 11856, '[email protected]', 0704582235, 56, (SELECT Lån_ID FROM Lån WHERE <put your select criteria here>)); 
+0

'Lån_ID' est' INT', pourquoi le réglez-vous sur '2017-09-12''? – Barmar

1

Si vous souhaitez associer une ligne Lånetagare avec la ligne précédemment insérée dans Lån, vous devez définir une valeur pour la clé étrangère.

Voici une façon courante de le faire:

INSERT INTO Lån (Lånedatum, Inlämningsdatum, Omlån) 
VALUES ('2017-09-12', '2017-09-15', '2017-09-15'); 

INSERT INTO Lånetagare (...other columns..., Lån_ID) 
VALUES (...other values..., LAST_INSERT_ID()); 

La fonction LAST_INSERT_ID() renvoie le plus récent id incrémentation automatique créé par une instruction INSERT au cours de votre session. En savoir plus sur cette fonction ici: https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_last-insert-id