标签: php mysql concurrency duplicates
该系统被许多商店使用,每个商店都有自己的发票号,例如
SHOPA-0001 SHOPA-0002 SHOPA-0003 SHOPB-0001 SHOPB-0002 ...
现在我做的是,选择MySQL表格中的最后一个ID,并选择发票号码+1。我的问题是,1店有多个运行该系统的PC,如果2个收银员同时提交表格,则会有重复。
对此问题的任何建议?
答案 0 :(得分:1)
使用安全的意向锁定,就像我的回答Here一样。但是我有Chassis和Brakes这样的部分,你的是SHOPA和SHOPB等。你可以决定是否希望客户端处理左边的零填充,或者你是否希望mysql以列宽int处理它(4 )或LPAD()使用CONCAT。
LPAD()
CONCAT
正如那个答案所提到的那样,这是一种安全的并发方式,而且商店之间是分开的。如果正确完成,锁定速度非常快。