一、序列的概念:在oracle中就是一个对象,这个对象用来提供一个有序的数据列,这个有序数据列的值都不会重复。
1.序列可以自动生成唯一值;
2.是可以可以被共享的对象;
3.典型的被生成主键值的一个对象;
4.可以被替代的应用程序代码;
5.当sequence值存放在缓存中的时候可以提高访问效率。
二、创建序列的语法:
CREATE SEQUENCE name
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]
参数值解析:
1.increment by n:表明值每次增长n(步长)
2.start with n: 从n开始
3.{MAXVALUE n | NOMAXVALUE}: 设置最大值
4.{MINVALUE n | NOMINVALUE}: 设置最小值,start with不能小于最小值。
5.CYCLE | NOCYCLE : 是否循环,建议不使用
6.CACHE n | NOCACHE : 是否启用缓存。
例如:
create sequence emp_id_seq
start with 100 //从100开始
increment by 1 //每次增长1
nomaxvalue //没有最大值
nominvalue //没有最小值
nocycle //没有循环
nocache; //不缓存
可以通过数据字典user_sequences来查看当前用户拥有的序列信息;
select sequence_name,min_value,max_value,last_number
from user_sequences
where sequence_name = 'EMP_ID_SEQ';
序列的属性:
1.nextval 返回下一个可用的序列值;
即使被不同的用户调用,每次也返回一个唯一的值;
select emp_id_seq.nextval from dual;
2.currval获取序列当前的值;
在currval调用之前,必须保证nextval已经获取过一次值。
select emp_id_seq.currval from dual;
3.缓存:使用缓存可以提高sequence的访问效率
三、修改序列:
ALTER SEQUENCE name
[INCREMENT BY n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]
注意:
1.用户必须是序列的拥有者,或者有修改序列的权限;
2.修改后的序列,只能对之后的值起作用;
3.不能修改start with,如果想修改序列,只能删了重新建。
四、删除序列:
drop sequence seq_name;
例如:
drop sequence emp_id_seq;
参考内容:https://www.cnblogs.com/yzqm666/p/5886914.html