Вставить на ограничение внешнего ключа - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь вставить [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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...