有一张客户表customer,此表里有1000个客户数据。
有N个服务人员对这1000客户进行业务操作。
当A服务人员对a_cu客户进行业务操作时,那么其它的服务人员是不能对a_cu客户进行业务操作的,也就是其它服服人员(B)必须查询到a_cu客户下一个客户(b_cu),
然后依此类推。这里就成在一个数据并发的问题!
先谢谢各位大师。

解决方案 »

  1.   

    先谢过shangqiao(伤桥)
    按你说的,还是会出现并发的问题。
     1,查询数据,
     2,修改(update)状态值.
     2,业务操作完成,再改回状态值。
    如果在查询时出现并发,怎么办? 需求要求只要一个客户被查询出来,就不能被其它服务人员查询出来后进行业务操作。
    还有问题就是发生意外又怎么办?
    如查询出来后,也修改状态值。然后断电,断网,死机。这样就会出现此次的查询出来的客户,就不会被查询出来,就不会对其进行业务操作。
      

  2.   

    1 这个逻辑建议在应用层实现,非常好控制,表里的数据由于是没有行顺序的,所以不好控制2 要解决数据库的并发,可用select .... for update即可。
      

  3.   

    用for update挑出当前用户修改的当前记录就可以了
      

  4.   

    select ... for update 可以锁定当前纪录
      

  5.   

    2,修改(update)状态值.
    update 的时候加where语句
      

  6.   

    三种方法:
    1、通过oracle本身提供的select...for update;
    2、增加状态字段,并且将状态查询调整设计为原子操作,即直接update查到的状态
       允许的记录的状态字段,而非先查询一次下一条语句再更新;
    3、增加一个调度,所有操作先向调度程序申请,由调度程序分配,这个方法虽然麻
       烦点,但可完全实现你的需求。
      

  7.   

    1、用select ..for update。这条语句的意思只是锁定当前行不能修改。并代表其不能被其它会话来查询。
    2、增加一个状态字段更不可取。会有一查,一改的操作。谁能保证一查时不并发呢?
    看来,高手是不来csdn啦。