繁体   English   中英

MYSQL:具有外键关系的多表插入

[英]MYSQL : multiple table insert with foreign key relationship

订单表


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的item4

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

所以现在的问题是

我需要知道订单项表的相应订单ID,以及订单调整表的类似订单项ID。

因此,我分别触发查询而不是批量插入。 甚至有可能使用jdbc实现类似的功能吗?

您必须首先将查询激发到1. Orders表中。

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

您也可以像这样获取ID。 它将返回数据库为您的订单创建的ID。

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

在executeUpdate之后,您可以获得这样的ID。

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

现在您可以获取ID并将其用作FK

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM