Sequence(二)

2015-07-24 08:40:10 · 作者: · 浏览: 1



NEXTVAL
----------
15


SQL> select text_1.nextval from dual;


NEXTVAL
----------
20


SQL> select text_1.currval from dual;


CURRVAL
----------
20

======================================================
使用序列填充主键:

当表的主键是整数时,可以用序列来生成主键:
SQL> create table t_text(id integer constraint t_text_pk primary key);

表已创建。


SQL> create sequence text_te nocache;


序列已创建。

在使用序列填充主键时,通常会选择使用nocache,这样可以避免序列不连续的情况,序列不连续的情况,之所以会发生不连续的情况,是因为关闭数据库时,所缓存的
值将全部丢失。但是使用nocache会降低性能。但是如果可以容忍主键不连续,那就用cache
SQL> insert into t_text values (text_te.nextval);


已创建 1 行。


SQL> select * from t_text;


ID
----------
1


SQL> insert into t_text values (text_te.nextval);


已创建 1 行。


SQL> select * from t_text;


ID
----------
1
2


===================================
修改序列,但是有限制:
不能修改序列的初值
序列的最小值不能大于当前值
序列的最大值不能小于当前值


SQL> ALTER SEQUENCE text_te increment by 5;

序列已更改。



SQL> insert into t_text values (text_te.nextval);


已创建 1 行。


SQL> select * from t_text;


ID
----------
1
2
7


=====================================================
删除序列:
drop sequence sequence_name;