1、创建
CREATE SEQUENCE oracle_sequence -- 创建名为:oracle_sequence 的序列
INCREMENT BY 1 -- 如果省略,则默认为1,如果负值,则代表序列的值是按照此步长递减的。
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 20; -- CACHE(缓冲)定义存放序列的内存块的大小,默认为20。
2、修改
ALTER SEQUENCE 序列名
[INCREMENT BY n]
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}]
[{CYCLE|NOCYCLE}]
[{CACHE n|NOCACHE}];
不能修改序列的初始值
3、删除
DROP SEQUENCE 序列名;
4、查看所有序列
select SEQUENCE_NAME from dba_sequences;
select * from USER_SEQUENCES //查询所有
5、特点
- 是oacle提供的用于产生一系列唯一数字的数据库对象
- 自动提供唯一的数值
- 共享对象
- 主要用于提供主键值
- 将序列值装入内存可以提高访问效率
6、使用
insert into table(num1,num2) values(自增序列名.nextval,’value2’); //nextval为自增后的值
7、注意事项
第一次nextval返回的是初始值;随后的nextval会自动增加你定义的INCREMENT BY值,然后返回增加后的值。currval 总是返回当前SEQUENCE的值,但是在第一次nextval初始化之后才能使用currval,否则会出错。一次nextval会增加一次SEQUENCE的值,所以如果你在同一个语句里面使用多个nextval,其值就是不一样的
网友评论