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