插入数据时,如何确保外键在另一个表中作为主键存在?

时间:2014-01-10 13:55:01

标签: mysql foreign-keys

这是我正在使用的一些表的示例。

create TABLE People(
peopleID int not null,
name varchar(40) not null,
primary key (peopleID)
);


create table car(
carID int not null,
peopleID int not null,
primary key (carID),
foreign key (peopleID) references People(peopleID)
);

如何确保当我插入'car'时,'peopleID'外键在'People'表中作为主键存在。

例如,我希望以下语句抛出错误:

INSERT INTO car VALUES (123, 343);

...因为'PeopleID'中不存在343,因为它是空的。

由于

1 个答案:

答案 0 :(得分:1)

评论时间有点长。

您已经描述了foreign key约束的作用

  

对于支持外键的存储引擎,MySQL拒绝任何INSERT   或尝试在a中创建外键值的UPDATE操作   子表如果没有匹配的候选键值   父表。

约束描述为here