2015-07-19 99 views
1

我有两个表,'预订'和'isBooked'。我想将值添加到isBooked表。但我不断收到错误“无法添加或更新子外键约束失败”。MySql - 无法添加或更新子外键约束失败

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

您正尝试在isBooked中插入值,该值在推荐的表格预订中不存在。 – juanmajmjr

+3

你值得赞扬只有FK的 – Drew

+2

插入尝试违反运行,狗,或预约约束(至少1) – Drew

回答

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。

+2

中缺失的数据,并且有您的答案 – Drew

+1

好,清晰,完整和时尚! – juanmajmjr

相关问题