Я пытаюсь вставить [ORDERID] (внешний ключ), [PHONENUMBER] (внешний ключ), [ORDERTIME] и [TOTALPRICE] в мою базу данных заказов. [ORDERID] и [PHONENUMBER] также являются первичными ключами двух других моих коллекций, Customers и OrderedItems. Итак, я позаботился об обновлении этих таблиц, прежде чем обновлять таблицу заказов. Тем не менее, я все еще получаю ошибку внешнего ключа в моей базе данных заказов.
try
{
// create a PreparedStatement to insert a new address book entry
PreparedStatement addCustomer
= connection.prepareStatement("INSERT INTO customers "
+ "(Phonenumber, firstname, lastname, email) \n"
+ " ( SELECT ?, ?, ?, ? \n"
+ "From customers \n"
+ " WHERE phonenumber = ?"
+ " HAVING count(*)=0 )"
);
// specify the PreparedStatement's arguments
addCustomer.setString(1, getFirstName());
addCustomer.setString(2, getLastName());
addCustomer.setString(3, getPhone());
addCustomer.setString(4, getEmail());
addCustomer.setString(5, getPhone());
addCustomer.executeUpdate(); // insert the entry
// create a PreparedStatement to insert a new address book entry
PreparedStatement addOrderedItems =
connection.prepareStatement("INSERT INTO ORDEREDITEMS " +
"(ORDERID, PIZZAID, PIZZAQN, SIDESID, SIDESQN, DRINKID, DRINKQN)" +
" VALUES (?, ?, ?, ?, ?, ?, ?)");
// specify the PreparedStatement's arguments
addOrderedItems.setInt(1, getID());
addOrderedItems.setInt(2, getPizza());
addOrderedItems.setInt(3, getPizzaQuantity());
addOrderedItems.setInt(4, getSides());
addOrderedItems.setInt(5, getSidesQuantity());
addOrderedItems.setInt(6, getDrinks());
addOrderedItems.setInt(7, getDrinksQuantity());
addOrderedItems.executeUpdate(); // insert the entry
// create a PreparedStatement to insert a new address book entry
PreparedStatement addEntry =
connection.prepareStatement("INSERT INTO ORDERS " +
"(ORDERID, PHONENUMBER, ORDERTIME, TOTALPRICE)" +
" VALUES (?, ?, ?, ?)");
// specify the PreparedStatement's arguments
addEntry.setInt(1, getID());
addEntry.setString(2, getPhone());
addEntry.setString(3, getTime());
addEntry.setDouble(4, getPrice());
addEntry.executeUpdate(); // insert the entry
return "index"; // go back to index.xhtml page