这是场景。此表 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
问题只是有时在完全相同的时间有两个或多个订单时,我最终会向支付处理器发送两个具有相同 orders_id 的订单。
问题是如何确保我没有向支付处理器发送重复的 Orders_id?
有人建议我使用 last_insert_id() 可能对或错,但我不知道如何实现它。
我阅读了关于锁定表的信息——这对于事务环境和 InnoDB 来说是个好主意吗?如果是这样,我该如何实施?