2015-07-19 100 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

相關問題