该系统被许多商店使用,每个商店都有自己的发票号码,例如
SHOPA-0001
SHOPA-0002
SHOPA-0003
SHOPB-0001
SHOPB-0002
...
现在我所做的是,选择 MySQL 表中的最后一个 ID,然后为发票号码+1。我的问题是,1个商店有多台PC运行这个系统,如果2个收银员同时提交表格,就会出现重复。
对这个问题有什么建议吗?
最佳答案
像我的回答一样使用安全的意图锁 Here 。但是,如果我有底盘和制动器等部分,那么您的部分将是 SHOPA 和 SHOPB 等。您可以决定是否希望客户端处理零的左侧填充,或者是否希望 mysql 使用列宽 int(4 )或使用LPAD()
与 CONCAT
.
正如该答案中提到的,这是实现并发的安全方法,并且商店彼此分开。如果操作正确的话,锁定速度非常快,就像瞬间一样。
关于php - 在 PHP 和 MySQL 中生成连续的发票号码(并发),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39564507/