1. What Is a Sequence?
自动生成的唯一数字
是一个可分享的对象
通常用于创建一个主键值
替代应用程序代码
缓冲到内存时,加快序列的访问速度
2.Creating a Sequence: Syntax语法
Ø 定义一个序列自动生成连续的数字
create sequence name
[increment by n]
[start with n]
[{maxvalue n | nomaxvalue}]
[{minvalue n | nominvalue}]
[{cycle| nocycle}]
[{cachen | nocache}]
3.Creating a Sequence: Example
Ø 创建一个名为S_DEPT_ID的序列用作S_DEPT表的主键
Ø 不使用CYCLE
SQL> CREATE SEQUENCE s_dept_id
INCREMENT BY 1
START WITH 51
MAXVALUE 9999999
NOCACHE
NOCYCLE;
Sequence created.
4.Confirming Sequences确认序列
Ø 验证您的序列值是否创建成功(是否加入了USER_SEQUENCES数据字典表中)
Ø SQL> SELECT sequence_name, min_value,
max_value, increment_by,
last_number
FROM user_sequences;
Ø LAST_NUMBER列显示下一个可用的序列号
5.NEXTVAL and CURRVAL Pseudocolumns伪列
NEXTVAL 返回下一个可用的序列值
它每次引用时都返回一个唯一值,即使对于不同用 户.
CURRVAL 获取当前序列值
6.Using the Sequence: Examples
在区域2插入一个名为Finance的新部门
SQL> INSERT INTO s_dept(id, name, region_id)
2 VALUES (s_dept_id.NEXTVAL,
3 'Finance', 2);
1 row created.
查看序列S_DEPT_ID的当前值
SELECT s_dept_id.NEXTVAL
2 FROM SYS.dual;
再运行
SQL> SELECT s_dept_id.CURRVAL
2 FROM SYS.dual;
7.Using a Sequence
缓冲到内存中的序列值可以被更快的访问到
空白序列值出现在以下情况:
当rollback发生时
当系统崩溃时
当一个序列在另外一个表中使用时
如果一个序列创建时使用了NOCACHE,您就可以通过查询USER_SEQUENCES表来查看下一个可用的序列
8.Modifying a Sequence: Syntax
改变增量,最大值,最小值,循环类型,缓冲类型
ALTER SEQUENCE sequence
[INCREMENT BY n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]
9.Modifying a Sequence: Guidelines
你必需是序列的拥有者,或者有这个序列的ALTER权限.
只有之后的序列会受到影响.
验证被执行.
这个序列需要被删除或者重建,从一个不同的数字开始增加.
10.Removing a Sequence
用DROP SEQUENCE 命令从数据字典中删除一个序列.
被删除后,该序列无法被再次引用.
SQL > DROP SEQUENCE s_dept_id;