2017-10-02 16 views
0

"Borrower"または "Lånetagare"というテーブルを作成しようとしていて、そこからIDを持つテーブルLånの値を挿入したいとします。私が得た結果はNULLです。どうして?MySQL外部キーの値が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

あなたは2番目のinsert文にLan_IDを挿入しないので、決して値が割り当てられないので、FKはnullです。 – Andrei

+0

これは、2番目のinsert文にこれを追加することです。最後のauto_incrementを挿入するmysqlのLånetagare(Lån_ID)値(LAST_INSERT_ID())に挿入してください。もっと読む[ここ](https://dev.mysql.com/doc/refman/5.7/en/information-functions.html #function_last-insert-id) – Andrei

+0

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

答えて

0

あなたはLånで以前に挿入された行とLånetagare内の行を関連付けたい場合は、外部キーの値を設定する必要があり

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'は' INT'です、なぜあなたは '' 2017-09-12''に設定していますか? – Barmar

1

を試してみてください。

ここでそれを行うための一般的な方法です:

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()); 

LAST_INSERT_ID()関数は、あなたのセッション中にINSERTステートメントによって作成された最新の自動インクリメントIDを返します。 https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_last-insert-id