Create Sequence

建立序列号,用于产生唯一的整数,典型用法是作为主键列。

CREATE SEQUENCE sequence_name
  [INCREMENT BY n]
  [START WITH n]
  [{MAXVALUE n | NOMAXVALUE}]
  [{MINVALUE n | NOMINVALUE}]
  [{CYCLE | NOCYCLE}]
  [{CACHE n | NOCACHE}];
ALTER SEQUENCE sequence_name
  [INCREMENT BY n]
  [{MAXVALUE n | NOMAXVALUE}]
  [{MINVALUE n | NOMINVALUE}]
  [{CYCLE | NOCYCLE}]
  [{CACHE n | NOCACHE}];
DROP SEQUENCE sequence_name;
参数 描述
sequence_name 序列名
INCREMENT BY n 增量值,默认为 1
START WITH n 开始值,默认为 1
MAXVALUE n 最大值
NOMAXVALUE 无最大值,即增量时为 10 27,减量时为 -1
MINVALUE n 最小值
NOMINVALUE 无最小值,即减量时为 -10 26,增量时为 1
CYCLE  当达到边界时继续产生序列值
NOCYCLE 当达到边界时不产生序列值,默认
CACHE n 指定 Oracle 预分配多少个序列值在内存中,默认为 20
NOCACHE 不缓存
属性 描述
NEXTVAL  下一个值
CURRVAL  现在的值

可使用范围

非子查询的 SELECT 部分
INSERT 语句的 SELECT 部分
INSERT 的 VALUES 子句
UPDATE 的 SET 子句

不可使用范围

视图的 SELECT 语句
包含 GROUP BY,HAVING,ORDER BY 子句的 SELECT 语句
SELECT,DELETE,UPDATE 的子查询
CREATE TABLE,ALTER TABLE 的默认值表达式

序列检查

SELECT sequence_name, min_value, max_value,
increment_by, last_number
FROM user_sequences;