以下是方案。此表訂單有一個名爲orders_id的auto_increment列。該表使用InnoDB存儲引擎。 (這不是在訂單表中插入新記錄,其關於如何避免發送重複的ID給處理器)發送到付款處理器的重複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
的問題是只有有時當有兩個或更多的訂單在同一時間,我最終發送兩個訂單相同orders_id到付款處理器。
問題是如何確保我不會將重複的Orders_id發送到付款處理器?
我被建議使用last_insert_id(),它可能是對的或錯的,但我不知道我可以如何實現它。
我讀過關於鎖定表 - 這是一個交易環境和InnoDB的好主意嗎?如果是的話,我該如何執行它?
將數據插入到具有掛起狀態的表中,然後在處理完成後更新它。這樣,您的訂單總是與實際條目相關聯。 – Waygood
我有點困惑,如果它是自動增量,爲什麼你計算ID?您是先添加到訂單表然後將其發送到付款處理器?如果是這樣,那麼是使用last_insert_id()。 – MatthewMcGovern
這是怎麼一回事? a)您從未使用過AUTO_INCREMENT,並且不知道如何b)您想爲將來的插入預訂訂單ID? c)其他 –