当前位置: 代码迷 >> PB >> PB与此同时:查询数据库最大值后+1写入数据库
  详细解决方案

PB与此同时:查询数据库最大值后+1写入数据库

热度:109   发布时间:2016-04-29 05:28:12.0
PB同时:查询数据库最大值后+1写入数据库

pb 操作oracle数据库,
**************************************************************
一台电脑在数据库中查找当前最大号,然后执行+1处理,写入数据库,这个没问题
**************************************************************

**************************************************************

现在有两个电脑同时执行查询最大,然后+1,写入数据库
现在问题是有时候两个同时写入一样的值

分析原因为:两台电脑同时查询出一数值(如:2014),然后一个写入新数值(加1操作:2015),
这时另一个继续执行2014  +   1,写入的值也为2015.
怎么避免这个问题啊,愁晕了

**************************************************************

------解决方案--------------------
查一下自增列的相关信息。。。
------解决方案--------------------
建议使用Oracle 的Sequence 来处理你的问题
------解决方案--------------------
这不就是多用户并发的问题吗,
我一般都是建个流水表存着这些号码
------解决方案--------------------
2--3楼的都可以试试   楼主原来的方法存在并发性的问题
------解决方案--------------------
同意三楼的做法,一般都有一个流水表保存各种最大编号

使用时,先锁数据行,然后查询出记录号,加1,使用,再将流水表的记录号改写,解锁

当然,在使用过程,最好不要有Message等停止操作。最好一次性操作,要么成功提交事务,要么失败回滚事务。
不然的话,其他客户端就都死了
------解决方案--------------------
弟兄,还是加个自增列的省心