java - 插入外键约束
问题描述
我正在尝试将 [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
解决方案
推荐阅读
- json - Flutter 嵌套 JSON 到列表视图
- laravel-5.7 - Laravel 5.7 动态速率限制不起作用
- playframework - 在所有活动线程完成之前,Play Framework http 响应不会释放
- r - 在 Ubuntu 18.04 上安装包 testthat R 的问题
- android - 使用 Scanner 查找字符串中的值
- reactjs - 我是否在 React 中为后端的每个表创建一个新视图?
- android - 如何使用 OAuth2 在我的改造中添加标题?
- php - 不支持请求方法“POST”(Spring Boot)
- python - 在机器人框架中设置默认文件上传文件夹(目录)
- java - 启用 Netflix Zuul 将流量重定向到另一台主机上的容器