0

我正在使用 php mysql 生成发票编号。

我的唯一 ID 将采用以下形式:“vend/year/id/order_no”,其中

vend 是字符串

年份是当前年份

id 是 vendor_id

订单号是:从其他表(订单表)按 vender_id 计算订单,加一。

我的问题发生了,当用户打开“订单”网页时,我必须在用户填写表单并提交表单之前显示这个生成的 id,所以必须先生成 id,但不要插入。

现在让用户在两个选项卡中打开网页,然后根据逻辑两个网页将显示相同的 id。但是用户尝试同时提交两个表单,然后将根据唯一约束接受第一次提交,第二次查询将失败,但我不希望这样,而且 b/c 它是供应商基础工作,100k 用户将访问该表所以我无法在桌子上创建锁。我也不能阻止他在两个标签中打开网页。保持这种状态的最佳方法是什么。

4

2 回答 2

0

给用户一个通知/警告:

“给定的订单号 123 已被使用,您要改用订单号 124 吗?”

或跳过问题,只是告诉用户使用了数字 124

于 2013-07-30T16:21:54.017 回答
0

我看到两种主要方法:

1) 在发票表单打开时保留唯一 ID,这可以通过将最后一个保留的 ID 保存在数据库中的某个位置来完成。一个优点是每个打开的窗口都有一个唯一的 ID,但是任何未提交的发票都会成为“浪费”的 ID。您可以有一种机制来使用这些“浪费”的 ID,或者只是忽略它们。

2) 在保存时检查 ID 有效性并自动更新或请求用户许可。这可能会很烦人。

我更喜欢方法1)

于 2013-07-30T16:53:04.377 回答