oracle序列

序列的两个伪列:
currval
序列的当前值,反复引用时该值不变。
nextval
序列的下一个值,每次引用按步长自增。

CREATE SEQUENCE se1
INCREMENT BY 10
START WITH 50
MAXVALUE 100
CYCLE
NOCACHE

第一次要引用一下 nextval伪列
select se1.nextval from dual;
以后就有currval伪列值了。
select se1.nextval from dual;

几点说明:
1)建立一个最简单序列只需要create sequence 序列名,其他使用缺省值,注意:起始是1,步长也是1。
2) 如果启用选项cache,缺省只有20个号,经验表明这个数量会不够,可以设置多一些,根据需要10000个也以。
3)选项cycle其实没有什么意义,因为它使序列发出重复值,这对于基于序列是主键值的用法是个问题。
4) 可以使用alter命令修改序列配置。但alter命令a不能修改起始值。如果要重启该序列,唯一的办法是删除并重新创建它。
5)循环后初始是从1开始的, 不管原来的值是如何设的
6)删除序列的命令是drop sequence 序列名
  此处提一下 CACHE 这个关键字:如果建立序列时不指定 CACHE 和 NOCACHE,默认值为 20,即一次性从序列里取20 个数放入内存,如果内存崩溃,则这 20 个数就会丢失,再取值时从第 21 个数开始取值,CACHE 设置的最小值为 2。



posted @ 2017-11-27 14:35  巴啦啦大魔王  阅读(167)  评论(0编辑  收藏  举报