Oracle 创建序列号

 

Oracle 创建序列号

1. 创建序列号里各参数的解释

SQL> CREATE SEQUENCE name [INCREMENT BY n]

[START WITH n] [{MAXVALUE n | NOMAXVALUE}]

[{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}]

[{CACHE n | NOCACHE}]

INCREMENT BY n 一次增长n 个数字

NOMAXVALUE 缺省值10E+27

NOMINVALUE 缺省值1

NOCYCLE 不循环, 常用于唯一关键字

CACHE n 在内存里缓存n个序列,出错回退时会丢失

oracle8i里默认的n是20

序列号的名称一般可以采用“表名_字段名”的命名规则

2. 插入自动增长序列号字段的方法

INSERT时如果要用到从1开始自动增长的数字做唯一关键字, 应该先建立一个序列号.

CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1

MAXVALUE 99999 NOCYCLE NOCACHE;

其中最大的值按字段的长度来定,比如定义的自动增长的序列NUMBER , 最大值为999999

INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL

例子: SQL> insert into s_dept(id, name, region_id) values (s_dept_id.nextval, 'finance', 2);

1 row created.

只有运行了序列号的名称. nextval后序列号的名称. currval 才有效才有值.

3. 查询序列号的情况

SQL> select sequence_name, min_value, max_value, increment_by, last_number from user_sequences;

其中last_number指的是序列号的下一个值.

4. 改变序列号

SQL> ALTER SEQUENCE sequence [INCREMENT BY n] [{MAXVALUE n | NOMAXVALUE}]

[{MINVALUE n | NOMINVALUE}]

[{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}];

注意: 不能改变它的起始值

如果要改变序列的起始值, 先把序列号删除掉, 再新建一个.

5. 删除序列号

SQL>DROP SEQUENCE sequence;

6. 不能用序列号的nextval和currval的地方

视图的查询

有distinct的查询

有group by,having,order by的查询

有子查询的查询

表里的缺省值

 

 

你可能感兴趣的:(oracle,sql,cache)