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_NUMBERSTU_SEQ 1 1E28 1 N N 20 1
修改序列
ALTER SEQUENCE stu_seq MAXVALUE 9999 oracle账号 CACHE 9 CYCLE ORDER;
若要修改起始值,则只能删除序列然后重新创建。