本文共 2282 字,大约阅读时间需要 7 分钟。
序列(sequence)是一种数据库对象,可以为表中的行自动生成序列号,利用它可生成唯一的整数,产生一组等间隔的数值(类型为数字Number),主要用于生成唯一、连续的序号。序列是一种共享式的对象,多个用户可以共同使用序列中的序号。一般序列所生成的整数通常可以用来填充数字类型的主键列,这样当向表中插入数据时,主键列就使用了序列中的序号,从而保证主键的列值不会重复。用这种方法可以替代在应用程序中产生主键值的方法,可以获得更可靠的主键值。
一个序列的是由特殊的Oracle程序自动生成的,因此避免了在应用层实现序列而引起的性能瓶颈。序列号是一个Oracle整数,最多可以有38个数字。创建序列时,需要定义的信息包括序列名、上升或下降、序列号之间的间距和其它信息。
语法如下
CREATE SEQUENCE sequence_name[START WITH start_num][INCREMENT BY increment_num][{MAXVALUE maximum_num | NOMAXVALUE}][{MINVALUE minimum_num | NOMINVALUE}][{ CYCLE | NOCYCLE}][{CACHE cache_num | NOCACHE}][{ ORDER | NOORDER}];
其中各语法选项含义如下:
使用默认值创建一个序列s_seq1
创建序列s_seq2,开始值为100,增幅是2,最大值是1000,序列中的序号不在内存中进行缓冲
ALTER SEQUENCE语句可以用来修改序列。在修改序列时,可以修改的序列内容有如下限制:
==修改序列S_SEQ2的最小值、最大值、增幅,并使其中的序号可循环使用:
对于不再使用的序列,应该及时地将其删除。
DROP SEQUENCE可以用来删除序列。删除序列S_SEQ1
对用户而言,序列中的可用资源是其中包含的序号。用户可以通过SELECT命令获得可用的序号,也可以将序号应用于DML语句和表达式中。如果要使用其他用户的序列号,则必须具有对该序列的SELECT权限。
序列提供了两个伪列,即NEXTVAL和CURRVAL,用来访问序列中的序号
需要注意的是,在第一次引用CURRVAL之前,必须引用过一个序列的NEXTVAL,用于初始化序列的值,否则会出现错误提示。
使用序列S_SEQ1为表sys_user表插入一条数据,代码如下:
create table sys_user(userId number primary key,userName varchar2(20) not null,userPWD varchar2(20) not null);
转载地址:http://ikpqb.baihongyu.com/