【发布时间】:2019-02-12 06:07:00
【问题描述】:
您好,我知道有人问过这个问题,但我没有找到正确的答案,当我尝试进行第二次插入时怎么会:
INSERT INTO phone_numbers (phone_number) VALUES ('226');
我得到错误:
错误 1452 (23000): 无法添加或更新子行:外键约束失败 (
week7.phone_numbers, CONSTRAINTphone_numbers_ibfk_1FOREIGN KEY (user_id) REFERENCESusers(id))
DDL 代码如下:
create table users (
id int unsigned not null auto_increment,
name varchar(100) not null,
primary key(id)
);
INSERT INTO users (name) VALUES ('alex');
create table phone_numbers (
id int unsigned not null auto_increment,
user_id int unsigned not null,
phone_number varchar(25) not null,
primary key(id),
foreign key (user_id) references users (id)
);
INSERT INTO phone_numbers (phone_number) VALUES ('226');
【问题讨论】:
-
您必须在插入中提供现有的 user_id。您似乎误解了外键的工作原理 - 它们是约束,不会为您生成 user_id。 FK 只是检查引用表中是否存在。