Oracle数据库-设计自动增长序列(Oracle 11g)-笔记

时间:2022-03-29 14:53:25
在很多的数据库里面都存在一种称为自动增长列的数据类型。几乎所有的关系型数据库都支持自动增长列的操作,但是只有Oracle特殊,他只有在Oracle 12C版本之后才提供有自动增长列,在这之前都没有,所有类似的操作都必须通过序列的方式处理。
如果是Oracle 12C之前的版本只能通过手工处理.

**序列的创建语法**
CREATE SEQUENCE 序列名称;
[INCREMENT BY 步长][START WITH 开始值]
[MAXVALUE 最大值 | NOMAXVALUE]
[MINVALUE 最小值 | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE 缓存数据 | NOCACHE]

大部分情况,使用序列的时候都只会创建默认序列
创建一个默认序列seq:
CREATE SEQUENCE seq;
Oracle数据库-设计自动增长序列(Oracle 11g)-笔记
默认的序列就是指最小值为1,没有最大值,开始值为0,并且设置有20个缓存数据
查看序列属性:
SELECT * FROM user_sequences;
Oracle数据库-设计自动增长序列(Oracle 11g)-笔记
查询到的seq的信息:
序列名称(SEQUENCE_NAME):seq

SQL> SET LINESIZE 300;
SQL> SET PAGESIZE 30;
SQL> SELECT * FROM user_sequences;

SEQUENCE_NAME 序列的名称:seq
MIN_VALUE 最小值:1
MAX_VALUE 最大值:1.0000E+28
INCREMENT_BY 步长:1
CY 是否循环:N
OR
CACHE_SIZE 缓存 20
LAST_NUMBER 最后一次内容 1

那么现在序列已经创建成功了,随后需要去使用此序列,对于序列的使用可以采用两个伪列操作:
序列的对象.nextval:表示进行序列的增长,每调用一次,序列加上指定的步长;
序列的对象. currval:表示取得当前的序列内容,不管如何调用,序列的内容不发生改变