概念:序列是oracle提供的一个产生唯一数值型的机制。通常用于表的主键值,序列只能保证唯一,不能保证连续。
创建序列:
语法:CREATE SEQUENCE
[INCREMENT BY n]
[START WITH n]
[MAXVALUE n] [MINVALUE n]
[CYCLE|NOCYCLE]
[CYCHE n|NOCACHE]
说明:INCREMENT BY n –表示序列每次增长的幅度;默认值为1.
START WITH n –表示序列开始时的序列号。默认值为1.
MAXVALUE n –表示序列可以生成的最大值(升序).
MINVALUE n –表示序列可以生成的最小值(降序).
CYCLE –表示序列到达最大值后,在重新开始生成序列.默认值为 NOCYCLE。
CACHE n–允许更快的生成序列.预先生成n个序列值到内存(如果没有使用完,那下次序列的值从内存最大值之后开 始;所以n不应该设置太大)
示例:
创建递增序列:
Coracle账号reate sequence seq_test
Increment by 1
Start with 1
Maxvalue 1000
nocycle;
创建递减序列
Create sequence seq_test2
increment by -1
start with 5
max value 5
min value 1
nocycle;
序列使用:
1:NEXTVAL 返回序列下一个值;第一次访问时,返回序列的初始值,后继每次调用时,按步长增加的值返回
语法:select .nextval from dual;
示例:select seq_test.nextval from dual;
2:CURRENT 返回序列的当前值。注意在刚建立序列后,序列的CURRENT值为NULL,所以不能直接使用。使用过NEXTVAL访问序列后才能使用
语法:查看序列的当前值
select .currval from dual;
示例:select seq_test.nextval from dual;
select seq_test.currval from dual;
删除序列:
语法:DROP SEQUENCE
示例:Drop sequence seq_test;
序列与sys_guid 都可以作为主键值。
select sys_guid() from dual;