索引语法
--第一种CREATE SEQUENCE sequence[INCREMENT BY n][START WITH n][{MAXVALUE n | NOMAXVALUE}][{MINVALUE n | NOMINVALUE}][{CYCLE | NOCYCLE}][{CACHE n | NOCACHE}];--第二种CREATE SEQUENCE dept_deptid_seqINCREMENT BY 10START WITH 120MAXVALUE 9999NOCACHENOCYCLE;
CYCLE | NOCYCLE 指定在达到最大值或最小值之后,序列是否继续生成值(NOCYCLE 是默认选项)
CACHE n | NOCACHE 指定Oracle Server 预先分配并保留在内存中的值的数量(默认情况下,Oracle Server 会高速缓存20 个值)
NEXTVAL 和CURRVAL 伪列
• NEXTVAL 会返回下一个可用的序列值。每次被引用时NEXTVAL 都会返回一个唯一值,即使对于不同用户也是如此。
• CURRVAL 会获得当前序列值。
• 只有对序列发出NEXTVAL 之后,CURRVAL 才能包含值
使用NEXTVAL 和CURRVAL 的规则
可以在下列上下文中使用NEXTVAL 和CURRVAL:
• 不是子查询一部分的SELECT 语句的SELECT 列表
• INSERT 语句中子查询的SELECT 列表
• INSERT 语句的VALUES 子句
• UPDATE 语句的SET 子句
不能在下列上下文中使用NEXTVAL 和CURRVAL:
• 视图的SELECT 列表
• 带有DISTINCT 关键字的SELECT 语句
• 带有GROUP BY、HAVING 或ORDER BY 子句的SELECT 语句
• SELECT、DELETE 或UPDATE 语句中的子查询
• CREATE TABLE 或ALTER TABLE 语句中的DEFAULT 表达式
序列使用
--使用序列INSERT INTO departments(department_id,department_name, location_id)VALUES (dept_deptid_seq.NEXTVAL,'Support', 2500);--获取当前序列SELECT dept_deptid_seq.CURRVALFROM dual;--修改序列1ALTER SEQUENCE sequence[INCREMENT BY n][{MAXVALUE n | NOMAXVALUE}][{MINVALUE n | NOMINVALUE}][{CYCLE | NOCYCLE}][{CACHE n | NOCACHE}];--修改序列2ALTER SEQUENCE dept_deptid_seqINCREMENT BY 20MAXVALUE 999999NOCACHENOCYCLE;--删除序列DROP SEQUENCE dept_deptid_seq;
