これがシナリオです。このテーブル Orders には、orders_id という auto_increment 列があります。テーブルは InnoDB ストレージ エンジンを使用します。(これは Orders テーブルに新しいレコードを挿入することではなく、重複した ID をプロセッサに送信しないようにする方法に関するものです)
orders_id cust_id name address
100 55 abc 123 street
101 12 def 456 street
次の注文では、次の利用可能な Orders_id を次のように計算します
$new_order_id_query = "SHOW TABLE STATUS LIKE ORDERS";
$result = tep_db_query($new_order_id_query);
$row = tep_db_fetch_array($result);
$new_order_id = $row['Auto_increment'];
次に、名前、住所、items_ordered などの他の情報を収集し、このように支払い処理業者に送信します
102 44 xyz 44 Street
問題は、まったく同時に 2 つ以上の注文がある場合にのみ、同じ orders_idを持つ 2 つの注文を支払い処理業者に送信してしまうことです。
問題は、重複した Orders_id を支払い処理業者に送信していないことを確認するにはどうすればよいですか?
last_insert_id() を使用するように提案されましたが、これは正しいか間違っている可能性がありますが、それを実装する方法がわかりません。
テーブルのロックについて読みました - それはトランザクション環境と InnoDB にとって良い考えですか? もしそうなら、どうすればそれを実装できますか?