Any reference to CURRVAL always returns the sequence’s current value, which is the value returned by the last reference to NEXTVAL.Note that before you use CURRVAL for a sequence in your
session, you must first initialize the sequence with NEXTVAL.

解决方案 »

  1.   

    但是我在应用程序中获得的值有时与在sql*plus中获得的值不同.
    是不是sequence坏了,还是它在不同的session中有不同的值。是不是用select seq_name.nextval from dual;
    也会增加sequence的值thanks!
      

  2.   

    如果我加了trigger呢?CREATE OR REPLACE TRIGGER trg_seq_books_series_id
      BEFORE INSERT ON t_books_series
      FOR EACH ROWBEGIN
    SELECT seq_books_series_id.NEXTVAL INTO :new.id FROM dual;
    END;再进行上面的操作是不是会自加呢?我的实践结果是会自加!
    WHY ? ? ?
      

  3.   

    当对序列第一次用currval时,是取不出值的,只有在一个事务中先取过nextval以后,currval才能取出eg。----->ok
    SELECT seq_books_series_id.NEXTVAL FROM dual;
    SELECT seq_books_series_id.CURRVAL FROM dual;e.g _---------->errorcommit;
    SELECT seq_books_series_id.CURRVAL FROM dual;
      

  4.   

    在上面我说的情况是应不应该自加呢?我的实践说明在有trigger时即使select一下也是会将sequence自加的why ? ? ?thanks!!!