猿问

关于sequence的next number值的问题,麻烦帮忙看看以下的语句,求解释!

使用:
CREATE SEQUENCE test_sequence1
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
建立sequence后,在plsql中看到序列的定义时有一个是NEXT NUMBER,此时是1,但当使用了一次这个sequence后,再看这个NEXT NUMBER就是11了,我理解不应该是下一个值,即2么?难道理解不对?我没有中断数据库连接或是其它操作,cache也会跳号?谢谢!
我明白,但我在PLSQ中用右键view这个序列的定义时,有个列是NEXT NUMBER,用一次nextval后它就变成11了,不是2,不知道这是为什么呢?

SMILET
浏览 464回答 2
2回答

汪汪一只猫

NEXTNUMBER是序列下一次要缓存的值的起始。没看到 CACHE 10 吗? 系统已经给你预先缓存了10个值。所以,NEXTVAL是2,NEXTNUMBER就是 11了。如果 CACHE 20的话,你 看到的NEXT NUMBER就是21了!GOOD LUCK!

慕妹3146593

当你创建后 使用一次就是 test_sequence1.nextval 就是2 啊 test_sequence1.currval 是1。 你试试?例如你创建一个表 create table test(id number);insert into test values(test_sequence1.nextval );insert into test values(test_sequence1.nextval );insert into test values(test_sequence1.nextval );
随时随地看视频慕课网APP
我要回答