每次取sequence后,它就增長了,不管你是否提交。

解决方案 »

  1.   

    sequence每取一次,其值根据步长自动递增,但是不同用户已经取出的序列值不变。
    如果说A取出的序列值是1,B取出的序列值是2,那么当B取到2以后,对于A,序列的currval=1,对于B,序列的currval=2
      

  2.   

    在一个事物中,必须执行了nextval之后才能使用currval,否则系统会报错:“序列未初始化”。
    所以你的设想是不成立的。
      

  3.   

    这种简单的并发问题,oracle一定会很好的处理的!
      

  4.   

    同意 KingSunSha
    必须先nextval,此后再进行currval(不管别的连接nextval否commit否),此时仍等于刚才取得nextval;事务 操作  值
    a  nextval:n
    b  nextval:n+1
    a  currval:n