一张表两个字段一个id一个useCount表里存了100个id每个id对应自己的useCount业务场景是:当id每使用一次useCount要加1。当useCount大于1000时这个id就不能在被使用了(换句话说无法从数据库中查出)在高并发情况下,会遇到一种问题:假设数据表中有一条记录为id=123456;useCount=999a与b两个连接并发查询这个id123456都执行下列sql:select*fromtablewhereid=123456anduseCount<1000a先执行得到id123456的useCount是999之后在程序里做了一些逻辑判断或业务操作后执行sql:updateuseCount+1在a做判断且没有update之前b也执行了查询sql发现useCount是999之后它也会执行sql:updateuseCount+1但是事实上b不应该取得这个id因为a已经是第1000个使用者所以请教一下在高并发情况下仅使用数据库如何完成这一需求?
相关分类