SQL> create sequence cs2;序列已创建。SQL> create table cs3(c int);表已创建。SQL> insert into cs3 values(cs2.nextval);已创建 1 行。SQL> select * from cs3;         C
----------
         2

解决方案 »

  1.   

    因为你已经做了select cs2.nextval from dual,所以此时的值为1
    当你再做insert into cs3 values(cs2.nextval);此时当然是2了。
      

  2.   

    因为你已经做了select cs2.nextval from dual,所以此时的值为1
    当你再做insert into cs3 values(cs2.nextval);此时当然是2了。 
      

  3.   

    我说的是新的序列,就是说没有做了select cs2.nextval from dual,而是一开始就在表中做了insert into cs3 values(cs2.nextval),就是说我在dual表中和cs3中的序列都是新的,没有做过cs2.nextval,不行的话你们可以试试看。为什么一个是1,而一个是2?
      

  4.   

    额  我测试了,的确。  而且 在执行完insert 后  查询 select cs2.currval from dual 居然是未定义。。 
      

  5.   

    create sequence cs2
    有什么可郁闷的
    minvalue,maxvalue,start with,increament by 你一个都没有,你知道它从几开始啊?
      

  6.   


    --你们怎么试验的,我怎么没有试出来。。[TEST@myoracle] SQL>create sequence cs2;序列已创建。[TEST@myoracle] SQL>
    [TEST@myoracle] SQL>create table cs3(c int);表已创建。[TEST@myoracle] SQL>insert into cs3 values(cs2.nextval);已创建 1 行。[TEST@myoracle] SQL>select * from cs3;         C
    ----------
             1[TEST@myoracle] SQL>
      

  7.   

    你是不是用的是oracle11g的啊,我在11g上测试的时候是2,在10g上测试的时候是1。不知道是不是很版本有关!