Chinaunix

标题: oracle 一个简单的序列不正常 [打印本页]

作者: znn19850323    时间: 2014-04-02 10:57
标题: oracle 一个简单的序列不正常
我有一个book的空表,然后创建了一个序列:

SQL> desc book;
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
BOOKID                                    NOT NULL NUMBER(12)
BOOKNAME                                  NOT NULL VARCHAR2(32)
PRICE                                              NUMBER(5,2)
PRINTTIME                                          DATE

SQL> create sequence bookID
  2  Start with 1
  3  Increment by 1
  4  Maxvalue 99999999
  5  nocache
  6  nocycle;


SQL> select * from user_sequences;

SEQUENCE_NAME                   MIN_VALUE  MAX_VALUE INCREMENT_BY C O CACHE_SIZE
------------------------------ ---------- ---------- ------------ - - ----------
LAST_NUMBER
-----------
BOOKID                                  1   99999999            1 N N          0
          1


然后插入两条数据:

SQL> insert into book(bookid,bookname)
  2  values(bookID.Nextval,'sanmao');

1 row created.

SQL> insert into book(bookid,bookname)
  2  values(bookID.Nextval,'xiaoxueliunianjishuxue');

1 row created.


然后查看表:

SQL> select * from book;

    BOOKID BOOKNAME                              PRICE PRINTTIME
---------- -------------------------------- ---------- ---------
         2 sanmao
         3 xiaoxueliunianjishuxue

SQL> select bookid.currval from dual;

   CURRVAL
----------
         3


这个BOOKID 为什么从2开始? 应该是从1开始啊, 请指点。

谢谢
作者: 2009532140    时间: 2014-04-02 16:11
bookID.Nextval

你试试bookid.currval
作者: 2009532140    时间: 2014-04-02 16:11
删了重新建。
用bookid.currval
作者: swings2010    时间: 2014-04-03 11:18
是不是执行了一次select bookID.Nextval from dual???
作者: tomshenhao    时间: 2014-04-03 12:16
LZ第一句insert用的就是next interval. 默认是1,你用next不就是2
作者: znn19850323    时间: 2014-04-17 09:51
谢谢楼上各位,我明白了!
作者: dingning239    时间: 2014-04-23 13:52
肯定是1已经被使用过了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2