序列
-- sequence 序列
-- 序列是数据库的一种对象,用于生成一串不重复的编号,可以递增或递减
作用:
- 可以为表中列自动产生值
- 由用户创建数据库对象来创建序列(sequence),并且可以由多个用户共享
- 一般用在主键或者唯一列
1.创建序列:
语法:
create sequence 序列名称
start with 开始数字 默认是1
increment by 增长数字 默认是1
minvalue 最小值 默认是1
maxvalue 最大值 默认是1
cache 批量生成多少个序号,使用完后再生成一批,用于序列的创建优化,默认是20
例子:
create sequence myseq --创建序列名
start with 1 --从1开始
increment by 1 --每次增长1
maxvalue 999999999 --最大值 //nomaxvalue(不设置最大值)
minvalue 1 --最小值
cycle --循环 //nocycle(一直累加,不循环)
nocache --不使用缓存
解释:从1开始,每次增长1,最大值999999999,之后循环从1开始。
2.使用序列
-- 序列在使用时,可以使用序列的两个伪列: CURRVAL -取得序列的当前值,NEXTVAL - 获取序列的下一个值
-- 序列创建后CURRVAL是没有值的,必须先使用NEXTVAL获取下一值,这是序列才会生产一批值
create table test(id number primary key,name varchar2(32));
insert into test values(myseq.nextval,'abc');
insert into test values(myseq.nextval,'ddd');
特别说明:
1、myseq:表示序列的名字,nextval:关键字,表示从序列中取下一个值。
2、sequence序列是需要配合number类型的列来使用;
3、sequence序列是要在主键或unique列上使用的。
3. 删除序列
DROP SEQUENCE SEQ_TEST;