多线程程序。线程没有同步处理。,每次有20至30个线程,每个线程都去调用一个存储过程。该存储过程对表A进行插入,更改操作,有数据更新,没数据插入。表A的主键为ID和月份两个列。我想问的是:线程A和线程B线程C同时调用这个存储过程,对这张表操作。现在有这样的情况,线程A,B,C操作的数据都是相同ID相同月份,线程A调用存储过程,线程A的存储过程查询A表没有数据,于是插入。在查询和插入这个时间段其他线程进行了插入,结果线程A的存储过程插入失败,有没有这种可能?,oracle遇到这种情况怎样处理?

解决方案 »

  1.   

    谢谢楼上,我正是想知道oracle存储过程面对并发请求的处理。
      

  2.   

    你程序里面必须自己处理并发问题,oracle管不了那么多.
      

  3.   

    你这样写肯定有问题,给你一个简单的处理并发的方法
    select * from 表A for update;
    等过程完了后再
    commit;
    这样
    多个进程就会在这里进行排队了。
      

  4.   

    我赞成你这样写肯定有问题,给你一个简单的处理并发的方法
    select * from 表A for update;
    等过程完了后再
    commit;
    这样
    多个进程就会在这里进行排队了。  这个说法
      

  5.   

     恩  for update;
      

  6.   


    楼主真是多虑了!多个存储过程同时对一张表进行操作时,oracle自己会让处理的!每个存储过程中最后一定要提交事务(commit)即可,其它交给oracle自动处理!
      

  7.   

    楼主要考虑的并不是没有道理  楼主的问题不单纯是oracle的并发处理机制
    而是涉及到了业务逻辑控制