MySQL 外键值为 NULL

标签 mysql foreign-keys primary-key

我正在尝试创建一个名为“Borrower”或“Lånetagare”的表,并希望从表 Lån 中插入带有 ID 的值。我得到的结果是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, 'Tim@hotmail.com', 0704582235, 56);

SELECT * FROM Lånetagare;

最佳答案

如果要将 Lånetagare 中的行与 Lån 中先前插入的行关联起来,则必须为外键设置一个值。

这是一种常见的方法:

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() 函数返回 session 期间由 INSERT 语句创建的最新自动增量 ID。在这里阅读有关此功能的更多信息:https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_last-insert-id

关于MySQL 外键值为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46532550/

相关文章:

mysql - [ Play Framework ] : Performance testing with MySql

mysql 错误代码 1022 表中有重复键

Python 类外键继承

mysql - phpmyadmin 版本 4 : Relation view sometimes does not show foreign key constraints

mysql - 复合PK的正确制作方法

sql - 如何获取 SQL 更新的主键?

mysql - 数据表和查表同时级联删除

java - 找不到适用于 jdbc :mysql://localhost:3306/jpa 的合适驱动程序

mysql - SQL 中识别与非识别关系

mysql - 一个 SQL 查询,用于获取给定维基百科页面标题的类别列表