您的位置:首页 > 数据库 > Oracle

oracle 学习笔记 - 序列

2017-08-21 16:36 399 查看

什么是序列?

  序列:可供多个用户来产生唯一数值的数据库对象。本质就是一个数组。

     mysql数据库中的auto_increament.

自动提供唯一的数值

共享对象

主要用于提供主键值

将序列值装入内存可以提高访问效率

创建序列

create sequence sequenceName
[inceement by n] #不长
[start with n]
[{maxvalue n | nomaxvalue}]
[{minvalue n | nominvalue}]
[{cycle | nocycle}]
[{cache n | nocache}];

--使用
insert into testseq values(myseq.nextval,'aaa');


查询序列

查询素具字典视图user_sequences获得序列的定义信息

select suqunece_name, min_value, max_value,
increament_by, last_number
form user_sequences;


修改序列

alter sequence sequenceName
increment by 20
maxvalue 8888
nocache
nocycle;


删除序列

drop sequence sequenceName;


伪列nextval、currval

nextval返回序列中下一个有效的值,任何用户都可以引用。一开始指向数组的地址,第一个元素之前的位置。

currval中存放序列的当前值。

nextval 应在currval之前指定

# nextval 应在currval之前指定

SQL> select myseq.currval from dual;
select myseq.currval from dual
*
第 1 行出现错误:
ORA-08002: 序列 MYSEQ.CURRVAL 尚未在此会话中定义


SQL> select myseq.nextval from dual;

NEXTVAL
----------
1

已选择 1 行。

SQL> select myseq.currval from dual;

CURRVAL
----------
1
已选择 1 行。


使用序列

序列在下列情况下出现裂缝

回滚

系统异常

多个表同时使用同一序列
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle