序列(Sequence)
什么是序列
序列是用户创建的数据库对象,序列会产生唯一的整数。序列的一个典型的用途是创建 一个主键的值,它对于每一行必须是唯一的。序列由一个 Oracle 内部程序产生并增加或减 少。
序列是一个节省时间的对象,因为它可以减少应用程序中产生序列程序的代码量。序列 号独立于表被存储和产生,因此,相同的序列可以被多个表使用。
操作序列
查询序列
--查询序列
SELECT sequence_name, increment_by, max_value, min_value, last_number
FROM user_sequences;
使用序列
NEXTVAL 和 CURRVAL 伪列
-
NEXTVAL 返回下一个可用的序列值,它每次返回一个唯一的被引用值,即使对于 不同的用户也是如此
-
CURRVAL 获得当前的序列值
-
在 CURRVAL 获得一个值以前,NEXTVAL 对该序列必须发布
在 locationID2500 中插入一个新部门名称 Support。
--在 locationID2500 中插入一个新部门名称 Support。
insert into departments(department_id, department_name, location_id) values(dept_seq.nextval, 'Support', 2500);
修改与删除序列
修改序列
ALTER SEQUANCE dept_deptid_seq
increment by 20
maxvalue 9999999
nocache
nacycle
修改序列的原则
必须是被修改序列的所有者,或者有 ALTER 权限。
用 ALTER SEQUENCE 语句,只有以后的序列数会受影响。
用 ALTER SEQUENCE 语句,START WITH 选项不能被改变。为了以不同的数重新开 始一个序列,该序列必须被删除和重新创建。
将 dept_seq 序列中的增长量修改 20,最大值修改为 999999。
--将 dept_seq 序列中的增长量修改 20,最大值修改为 999999。
alter sequence dept_seq
increment by 20
maxvalue 999999
nocache
nocycle
删除序列
删除 dept_seq 序列
drop sequence dept_seq;