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;