2017-06-29 7 views
0

オンライン小売業者のWebサイトの注文情報を格納するOrders(Id、FK_Customer_Id、Comments、PaymentMethod、DeliverTime)テーブルがあります。注文の詳細を格納するためのテーブル:Order_Items(Id、FK_Order_Id、FK_Product_Id、Quantity)。NodeJSでMySQLのOrdersテーブルとOrder Itemsテーブルに挿入する方法

一度ユーザーが注文を送信すると、情報を2つのテーブルに保存する必要がありますが、並行性の問題を解決する方法はわかりません。

私はまずOrdersテーブルに挿入し、Order_Idを取得し、このIDをOrder_Itemsテーブルに挿入する必要があるためです。私は "SELECT LAST_INSERT_ID()OrderId"を使用しようとします。しかし、私が注文に挿入すると、私はIDを取得する前に、他の誰かが別の注文を挿入するか?次に、上記のステートメントは、私の注文ではない新しい挿入された注文のIDを取得します。

どうすればいいのか教えてください。または、order/orderItemを間違った方法で設計してください。

P.S.私は角度2をフロントエンドとnode.jsとしてAPIとMySQLをDBとして作成しています。

ありがとうございます。

答えて

0

私は操作を分けます。 これにより、レコード挿入による予期しない "レース"の影響を防ぐことができます。

ですので、まず注文を挿入してください。

次に、mysql_insert_id()やnode.jsと同等のものを「insert id」と入力して、挿入クエリが成功したことを確認します。

次に、そのIDを取得したら、その注文の詳細を安全に挿入できます。

+0

お返事ありがとうございますが、注文を挿入した後、「挿入ID」を尋ねる前に、別のユーザーも注文を挿入すると、「挿入ID」が表示されます誰か他の命令、どうすればこれを避けてください。 –

+0

あなたはそれについて心配する必要はありません。 insert_idメソッドは、現在開いている接続に関連付けられています。誰もあなたのIDを取得しません。 –

+0

ありがとうございます! –

関連する問題