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

时间:2015-07-19 18:48:14

标签: mysql

我有两张桌子,'预订'和'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'插入值时会出现此错误。

1 个答案:

答案 0 :(得分:2)

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

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

此约束确保无论您输入什么值,它都需要匹配引用表中的一行。

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