例如A表sql 1: update /*+parallel(a,4)*/ set a.col='A';sql 2: update /*+parallel(b,4)*/ set b.col=(select a.col from a where b.id=a.id);
顺序执行1,2sql当sql1的4个线程还没结束的时候有可能 sql2已经在执行了,这个时候会不会出现数据不一直,不同步的问题,请高手解释下

解决方案 »

  1.   

    update /*+parallel(a,4)*/ set a.col='A';执行的时候就会给所有满足调价的数据行加锁
    sql 2: update /*+parallel(b,4)*/ set b.col=(select a.col from a where b.id=a.id); 执行的时候如果碰到1中锁定的行就会等,直到1提交后再执行!
    如果仅仅是两个update的话很可能会出现数据不一致的情况(先执行的更新会丢失,被会面的update给覆盖),所以需要自己控制