我有一张“报价”表,里面也有“订单”。通过添加唯一的增量订单号,可以将报价更改为“订单”。
我愿意:
$DB->Sql("SELECT GET_LOCK('ORDERNO')");
$n = $DB->resultSql("SELECT max(orderno) FROM orders");
$n += 1;
$DB->Sql("UPDATE orders SET orderno=".$n." WHERE id=".$actualId);
$DB->Sql("SELECT RELEASE_LOCK('ORDERNO')");
但最近,我得到了两个相同的订单号。
我想避免使用
SELECT max(orderno) FOR UPDATE
因为这会阻塞整个表,并且orderno只在代码的这一部分设置,所以我的想法是使用锁来加快速度。
你知道为什么可以得到相同的数字两次吗?
1条答案
按热度按时间p4rjhz4m1#
可以使用单个update语句:
演示:http://rextester.com/gejhx43916
这样你就不需要手动锁定任何东西。