这个系统被许多商店使用,每个商店都有自己的发票号码,例如。

SHOPA-0001
SHOPA-0002
SHOPA-0003

SHOPB-0001
SHOPB-0002
...

现在我所做的是,选择MySQL表中的最后一个ID,并选择+1作为发票号。我的问题是,一个商店有多台电脑运行这个系统,如果两个收银员同时提交表格,就会有重复。
对这个问题有什么建议吗?

最佳答案

使用安全的意向锁,就像我的答案Here。但在我有底盘和刹车等部分的地方,你可以选择SHOPA和SHOPB等。你可以决定是希望客户端处理左边的零填充,还是希望mysql处理列宽度int(4)或使用LPAD()CONCAT
正如在那个答案中所提到的,这是一种安全的方法来实现并发性,并且商店被彼此分割开来。如果操作正确的话,锁的速度和瞬间一样快。

关于php - 在PHP和MySQL(并发)中生成连续的发票编号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39564507/

10-11 03:03