我有一張表訂購其中有字段 Orderid | status | cid |將數據插入到jdbc中的單個事務中的多個表中
和另一個表 ORDER_DETAILS
Oder_details_id | ORDER_ID |物品ID
我想無論是在單個事務表中插入值一樣,如果一個客戶下單,因此一應該生成訂單ID,並且應該將Order_id插入Order和Order_Details表中。 但我怎麼在JDBC?
我有一張表訂購其中有字段 Orderid | status | cid |將數據插入到jdbc中的單個事務中的多個表中
和另一個表 ORDER_DETAILS
Oder_details_id | ORDER_ID |物品ID
我想無論是在單個事務表中插入值一樣,如果一個客戶下單,因此一應該生成訂單ID,並且應該將Order_id插入Order和Order_Details表中。 但我怎麼在JDBC?
你可以將它設置自動提交false
:
dbConnection.setAutoCommit(false); // to start a transaction block.
// do your two inserts here
dbConnection.commit(); // to end a transaction block.
看看這裏全例如:JDBC Transaction example
它能夠選擇Order_Id,它是主鍵&Auto Increment在Order_Table中,並將此Order_Id插入到Orderdetails表中。在OrderDetails表中它是Forign key @Ashot Karakhanyan – TechGuy
@ user2210442,你可以先插入Order和OrderDetails。當您插入'Order'時,您可以按如下方式檢索生成的'id'(PK):'PreparedStatement ps = conn.prepareStatement(sql,PreparedStatement.RETURN_GENERATED_KEYS')並且在插入後獲取如下: 'int generatedId; try (結果集RS = ps.getGeneratedKeys()){ 如果(rs.next()){ generatedId = rs.getInt(1);} }' 然後,可以插入'OrderDatails時使用該ID作爲FK '。 –
Karakhanayan謝謝先生,但還有一件事更多所以它會返回剛剛生成的** Order_Id(主鍵)**還是會返回所有前面的** Order_Id(主鍵)** – TechGuy
你嘗試過這麼遠嗎?你可以發佈一些代碼,並顯示不按預期工作嗎? –
我已經通過一些代碼說,要麼使用事務或存儲過程。像第一個(惰性訂單id到訂單表)然後(從訂單表中選擇orderi_d,其中date =「」和itemid =「」),並將order_id插入到order_details表中 – TechGuy