Oracle的序列

时间:2022-01-14 02:49:26

Oracle的序列

序列介绍

序列是Oracle提供的用于产生一系列唯一数字的数据库对象。

使用序列能够实现自己主动产生主键值。序列也能够在很多用户并发环境中使用。为所实用户生成不反复的顺序数字,并且不须要不论什么额外的I/O开销。

与视图一样。序列并不占用实际的存储空间,仅仅是在数据字典中保存它的定义信息。用户要在自己的模式中创建序列。必须具有CREATE SEQUECNCE系统权限,假设要在其它模式中创建序列,则必须具有CREATE ANY SEQUENCE系统权限。

创建序列的语法例如以下:

CREATE SEQUENCE sequence_name
[START WITH start]
[INCREMENT BY increment]
[MINVALUE minvalue | NOMINVALUE]
[MAXVALUE maxvalue | NOMAXVALUE]
[CACHE cache | NOCACHE]
[CYCLE | NOCYCLE]
[ORDER | NOORDER]

创建序列

首先。以SYSDBA角色登录。赋予用户创建序列权限:

  GRANT CREATE ANY SEQUENCE TO siege

然后创建序列:

CREATE SEQUENCE stu_seq
START WITH 1
INCREMENT BY 1
NOMAXVALUE
NOCYCLE;

管理序列

使用序列,须要使用序列的两个伪劣NEXTVAL和CURRVAL。改动序列使用ALTER SEQUENCE语句,除了序列的起始值之外。能够又一次定义序列的不论什么子句和參数进行改动。

假设要改动序列的起始值,则必须先删除序列,然后再又一次创建该序列。对序列进行改动后,在缓存中的序列值将所有丢失,能够通过数据字典USER_SEQUENCE获取序列的信息。

查看序列信息

SELECT * FROM user_sequences WHERE sequence_name='STU_SEQ'

结果例如以下:

SEQUENCE_NAME   MIN_VALUE   MAX_VALUE   INCREMENT_BY CYCLE_FLAG ORDER_FLAG    CACHE_SIZE    LAST_NUMBER
STU_SEQ 1 1E28 1 N N 20 1

改动序列

ALTER SEQUENCE stu_seq
MAXVALUE 9999
CACHE 9
CYCLE
ORDER;

若要改动起始值,则仅仅能删除序列然后又一次创建。