在PHP&;中生成连续发票编号;MySQL(并发)

在PHP&;中生成连续发票编号;MySQL(并发),php,mysql,concurrency,duplicates,Php,Mysql,Concurrency,Duplicates,该系统被许多商店使用,每个商店都有自己的发票号,例如 SHOPA-0001 SHOPA-0002 SHOPA-0003 SHOPB-0001 SHOPB-0002 ... 现在我所做的是,选择MySQL表中的最后一个ID,并将发票号+1。我的问题是,一家商店有多台电脑运行这个系统,如果两个出纳同时提交表格,它将有重复 对这个问题有什么建议吗?像我的回答一样使用保险箱意向锁。但是,在我有底盘和刹车等部分的地方,你的应该是SHOPA和SHOPB等。你可以决定是希望客户端处理左边的零填充,还是希望

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

SHOPA-0001
SHOPA-0002
SHOPA-0003

SHOPB-0001
SHOPB-0002
...
现在我所做的是,选择MySQL表中的最后一个ID,并将发票号+1。我的问题是,一家商店有多台电脑运行这个系统,如果两个出纳同时提交表格,它将有重复


对这个问题有什么建议吗?

像我的回答一样使用保险箱意向锁。但是,在我有底盘和刹车等部分的地方,你的应该是SHOPA和SHOPB等。你可以决定是希望客户端处理左边的零填充,还是希望mysql使用列宽int(4)来处理,还是使用


正如在回答中提到的,这是实现并发性的安全方法,并且各个商店彼此分开。如果操作正确,锁会像瞬间一样快速。

可能会在您的ID中使用第三个元素,即SHOPA-COM1-0001,然后调整您的选择以按店铺和computer@Memor-这个项目的要求是基于商店的ID,而不是PCP。谢谢你的提示