MYSQL:多表插入与外键关系

时间:2015-11-24 06:48:56

标签: java mysql rest jdbc e-commerce

订单表

order_id,  
parent_order_id,  
customer_id,  
payment_mode, 
price ,
shipping_price, 
billing_address_id,  
shipping_address_id,  
create_TS,  
update_TS 

订购商品

order_id,
order_item_id, 
pos_code,  
quantity,  
unit_price, 
shipping_price, 
pickup_date,   
create_TS,   
update_TS,  
business_id,
item_id, 
delivery_id,  
workflow_id,

订单调整表

order_adjustment_id, 
order_item_id,  
offer_id,   
discount_value,  
create_ts, 
update_ts

下订单时,我会将数据插入这3个表以及其他一些表中。所有这些都发生在交易中。目前,该应用程序使用JDBC与MYSQL DB进行通信。

插入的顺序是 1.订单表。 2. OrderItems表 3. Order_Adjustments表

订单ID是订单商品表中的外键,订单商品ID是订单调整表中的外键。

当客户下订单时,我将父订单划分为基于商店的子订单。 例如,如果购物车包含 store1中的item1和item2 store2的item3和item4

此单车将分为2个单独的订单(由于物流原因)

现在问题是,

我需要知道订单商品表的相应订单ID,以及订单调整表的相应订单商品ID。

因为我单独触发查询而不是批量插入。 甚至可以使用jdbc来实现这样的东西吗?

2 个答案:

答案 0 :(得分:0)

您必须首先触发查询到1.订单表。

基于它从表Orders表获取MAX(order_id),然后将其用于外键到其他子表。

答案 1 :(得分:0)

你也可以得到这样的id。 它将返回数据库为您的订单创建的ID。

p = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

在executeUpdate之后你可以得到这样的id。

ResultSet rs = p.getGeneratedKeys();
rs.getInt(1)

现在你可以获取id并将其用作FK