我现在有个跑个程序。 里面是链接了 ORACLE 插入数据。是多线程并发的插入
  但是我的 插入程序中 比如
  线程一 的SQL语句是 
insert into locationnews(id, lat, lng, cell9Name, cell18name) values( seq_location.nextval, ?,?,?,?)insert into cellpropertis(id,lat_long_id,cellname,bcch,bsic,levdbm)
values(seq_cellpro.nextval,seq_location.currval,?,?,?,?)
这两条SQL语句在同一个链接里面 也在同一个事务里面 
 这样保证了  第一条SQL语句 的seq_location.nextval 与后面SQL语句seq_location.currval的数值一样 现在我的程序是 并发的执行
 有没有可能 
seq_location.nextval 不是本线程里面 而是 另一个线程里面的 seq_location.nextval 不知道我说明白没有?
  如果意思的留言 谢谢

解决方案 »

  1.   

    上面有些错的地方 我改下
    应该是 :我现在有个跑个程序。 里面是链接了 ORACLE 插入数据。是多线程并发的插入
      但是我的 插入程序中 比如
      线程一 的SQL语句是 
    insert into locationnews(id, lat, lng, cell9Name, cell18name) values( seq_location.nextval, ?,?,?,?)insert into cellpropertis(id,lat_long_id,cellname,bcch,bsic,levdbm)
    values(seq_cellpro.nextval,seq_location.currval,?,?,?,?)
    这两条SQL语句在同一个链接里面 也在同一个事务里面 
     这样保证了 第一条SQL语句 的seq_location.nextval 与后面SQL语句seq_location.currval的数值一样 现在我的程序是 并发的执行
     有没有可能 
    seq_location.currval  不是本线程里面 而是 另一个线程里面的 seq_location.nextval
      

  2.   

    同一个事务的sql语句,你当然要放到一个线程里来运行,如果不在同一个线程,你怎么控制事务啊,.........
      

  3.   

    seq_location.currval是根据事务确定的,既然你2条线程,就会2个事务,所以互不相干
      

  4.   

    oracle的seq是oracle中的全局对象,它是被oracle的锁机制保护的。你唯一要担心的是你的seq可能会因为多线程,造成不连续的情况。