19-Oracle入门之序列
2017-01-08 15:56
399 查看
基本概念
序列: 可供多个用户用来产生唯一数值的数据库对象自动提供唯一的数值
共享对象
主要用于提供主键值
将序列值装入内存可以提高访问效率
放在内存中速度快
auto_increment [ 1 , 2, 3, 4......20 ] ▲
CREATE SEQUENCE 语句
定义序列:CREATE SEQUENCE sequence [INCREMENT BY n] [START WITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}];
创建序列
创建序列 DEPT_DEPTID_SEQ为表 DEPARTMENTS 提供主键不使用 CYCLE 选项
CREATE SEQUENCE dept_deptid_seq INCREMENT BY 10 START WITH 120 MAXVALUE 9999 NOCACHE NOCYCLE; Sequence created.
create sequence myseq;
查询序列
查询数据字典视图 USER_SEQUENCES 获取序列定义信息SELECT sequence_name, min_value, max_value, increment_by, last_number FROM user_sequences;
如果指定NOCACHE 选项,则列LAST_NUMBER 显示序列中下一个有效的值
NEXTVAL 和 CURRVAL 伪列
NEXTVAL 返回序列中下一个有效的值,任何用户都可以引用CURRVAL 中存放序列的当前值
NEXTVAL 应在 CURRVAL 之前指定 ,二者应同时有效
应用:
INSERT INTO departments(department_id, department_name, location_id) VALUES (dept_deptid_seq.NEXTVAL, 'Support', 2500); 1 row created.
序列 DEPT_DEPTID_SEQ 的当前值
SELECT dept_deptid_seq.CURRVAL FROM dual;
使用序列
将序列值装入内存可提高访问效率序列在下列情况下出现裂缝:
回滚
系统异常
多个表同时使用同一序列
如果不将序列的值装入内存(NOCACHE), 可使用表 USER_SEQUENCES 查看序列当前的有效值
修改序列
修改序列的增量, 最大值, 最小值, 循环选项, 或是否装入内存ALTER SEQUENCE dept_deptid_seq INCREMENT BY 20 MAXVALUE 999999 NOCACHE NOCYCLE; Sequence altered.
注意事项
必须是序列的拥有者或对序列有 ALTER 权限
只有将来的序列值会被改变
改变序列的初始值只能通过删除序列之后重建序列的方法实现
删除序列
使用DROP SEQUENCE 语句删除序列删除之后,序列不能再次被引用
DROP SEQUENCE dept_deptid_seq; Sequence dropped.
综合实例
创建序列create sequence myseq;
创建表
create table tableA ( tid number, tname varchar2(40) );
从序列中取nextval,产生tableA的主键值
insert into tableA values(myseq1.nextval, 'aa');
序列的两个属性 NEXTVAL CURRVAL nextval应在currval之前被指定:
SQL> select myseq.currval from dual; select myseq.currval from dual * 第 1 行出现错误: ORA-08002: 序列 MYSEQ.CURRVAL 尚未在此会话中定义
select myseq.nextval from dual select myseq.currval from dual
删除序列
drop sequence myseq;
序列需要注意的问题
多个表共用一个序列,造成序列不连续回滚会造成,造成序列不连续
系统异常,内存序列丢失,造成序列不连续
相关文章推荐
- Oracle入门必会(19)
- 数据库 day60,61 Oracle入门,单行函数,多表查询,子查询,事物处理,约束,rownum分页,视图,序列,索引
- Oracle的入门心得
- Java Applet 入门 19
- Hibernate入门19 - 一对多实体映像
- Oracle序列
- Oracle入门基本知识一点通
- Oracle 的入门心得
- Spring入门19 - ModelAndView类别
- Oracle 的入门心得
- Oracle入门
- oracle8i-系统结构的组件(入门篇)
- ZT:Oracle PL/SQL入门之慨述
- Oracle PL/SQL入门之慨述
- Oracle PL/SQL入门之案例实践(转)
- Oracle PL/SQL入门之慨述
- (转)Oracle RMAN快速入门指南
- Oracle PL/SQL入门
- Oracle的入门心得
- Oracle的入门心得