MySql - 无法添加或更新子外键约束失败

标签 mysql

<分区>

我有两个表,“booking”和“isBooked”。我想向 isBooked 表添加值。但我不断收到错误消息“无法添加或更新子外键约束失败”。

CREATE TABLE booking (
    bookingID INT AUTO_INCREMENT,
    customerID INT,
    startDate DATE,
    endDate DATE,
    dateBookedOn  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    employeeID int,
    PRIMARY KEY (bookingID),
    INDEX idx_start (startDate),
    INDEX idx_end (endDate),
    FOREIGN KEY (customerID) REFERENCES customer(CustomerID)
);

CREATE TABLE isBooked(
    BookingID int,
    DogID int,
    RunID int,
    foreign key (RunID) references Run(RunID),
    foreign key (DogID) references Dog(dogID),
    foreign key (BookingID) references Booking(BookingID)
);


insert into isbooked values(1, 1, 1);

谁能告诉我为什么在尝试向“isBooked”插入值时出现此错误。

最佳答案

您的 isbooked 表对其他三个表的引用有外键约束:

foreign key (RunID) references Run(RunID),
foreign key (DogID) references Dog(dogID),
foreign key (BookingID) references Booking(BookingID)

此约束可确保您输入的任何值都需要与引用表中的行之一匹配。

因此,您收到此错误的原因是在一个(或所有)引用表中没有匹配的记录。首先,您需要使用您在插入中使用的 ID 添加 Run、Dog 和 Booking,然后才能向 isbooked 添加记录。

关于MySql - 无法添加或更新子外键约束失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31504693/

相关文章:

javascript - 返回 null mysql nodejs

mysql - 将数据从一个表复制到另一个表。数据库不同表结构不同

mysql - 如何在sqlite中只选择最大行?

python - Google Cloud SQL - 我可以使用 SQLAlchemy 直接访问数据库吗 - 不在本地

mysql - 如何修复 SQL 错误 1064?

php - 如何对具有多个值的字段的 MySQL 表进行排序

php - 如何创建新闻源(AJAX 新闻源)

MySQL 查询说明 : Index choosing when the query has "WHERE" as well as "ORDER BY"

PHP 下拉排序

javascript - PHP 表单不会提交到基于 javascript 的 MYSQL 数据库