序列是Oracle i提供的用于按照设定的规则自动产生数据的方案对象在某些数据表的结构中有些字段需要这种特性比如对于某个学生数据表的学号关键字段用户可以希望在录入数据时能够自动在上一个记录的学号字段上自动加等由于Oracle i提供的种基本数据类型并没有这样的功能可以通过序列方案对象来实现
序列的创建
下面介绍在【企业管理器】中如何创建序列
()在【企业管理器】中选择【myoraclemynet】/【方案】/【序列】选项单击鼠标右键在出现的快捷菜单里选择【创建】选项如图所示
()出现如图所示的创建序列的【一般信息】选项卡
在【名称】文本框里输入待定义的序列的名称TEMPSEQUENCE
在【方案】下拉列表框里选择序列所属的用户名SCOTT
序列【类型】参数有两个选项若选择【升序】单选钮则表示将创建从初始值向最大值递增的序列这是创建序列时的默认设置若选择【降序】单选钮则表示将创建从初始值向最小值递减的序列
对【值】可以进行设置的参数如下
在【最小值】文本框里设置序列允许的最小值创建序列时该字段最初为空如果单击【创建】按钮时该字段为空则对升序序列使用默认值 而对降序序列使用默认值
在【最大值】文本框里设置序列允许的最大值创建序列时该字段最初为空如果单击【创建】按钮后该字段为空则将对升序序列使用默认值 而对降序序列使用默认值
在【时间间隔】文本框里设置递增序列递增的间隔数值(升序序列)或递减序列递减的间隔数值(降序序列)创建序列时该字段最初为空如果单击【创建】按钮后该字段为空将使用默认值该字段只能为正整数
在【初始值】文本框里设置序列的起始值如果单击【创建】按钮后该字段为空对升序序列将使用该序列默认的最小值对降序序列将使用该序列默认的最大值
对【选项】可以设置的参数如下
若选择【循环值】复选框则表示指定在达到序列最小值或最大值之后序列应继续生成值对升序序列来说在达到最大值后将生成最小值对降序序列来说在达到最小值后将生成最大值如果未选择该复选框序列将在达到最小值或最大值后停止生成任何值默认情况下是未选择状态
若选择【排序值】复选框则指定序列号要按请求次序生成默认情况下是未选择状态
在【高速缓存】中设置由数据库预分配并存储的值的数目参数若选择【默认值】单选钮则表示将设置默认值为 默认情况下选择此选项若选择【无高速缓存】单选钮则表示指定不预分配序列值若选择【大小】单选钮则表示在文本框里输入可接受的值最小值为对循环序列来说该值必须小于循环中值的个数如果序列能够生成的值数的上限小于高速缓存大小则高速缓存大小将自动改换为该上限数
完成设置后单击【创建】按钮
()成功创建序列后出现如图所示界面单击确定按钮
()读者也可以在【SQLPlus Worksheet】中执行下列SQL程序创建序列
―――――――――――――――――――――――――――――――――――――
CREATE SEQUENCE SCOTTTEMPSEQUENCE
INCREMENT BY START WITH
MAXVALUE E MINVALUE
NOCYCLE CACHE NOORDER
―――――――――――――――――――――――――――――――――――――
【配套程序位置】第章\ createsequencesql
序列的使用
下面介绍在向数据表中插入数据时如何使用序列
()首先为实例建立一个数据表SCOTTSEQUENCE_TABLE为简化起见该数据表仅包含一个类型为NUMBER的数据列NO
在如图所示的创建表的【一般信息】选项卡中进行如下设置
在【名称】文本框中输入SEQUENCE_TABLE
在【方案】下拉列表框中选择SCOTT
在【表空间】下拉列表框中选择USERS
在【名称】单元格中输入NO在【数据类型】下拉列表框单元格中选择NUMBER
完成设置后单击【创建】按钮
()读者也可以在【SQLPlus Worksheet】中执行下列SQL代码创建数据表SCOTTSEQUENCE_TABLE
―――――――――――――――――――――――――――――――――――――
CREATE TABLE SCOTTSEQUENCE_TABLE (NO NUMBER() NOT NULL)
TABLESPACE USERS
―――――――――――――――――――――――――――――――――――――
【配套程序位置】第章\ createsequencetablesql
()在插入新的记录时使用刚创建的TEMPSEQUENCE序列来自动产生NO数据列的值在【SQLPlus Worksheet】里执行下面的SQL代码执行的结果如图所示
―――――――――――――――――――――――――――――――――――――
INSERT INTO SCOTTSEQUENCE_TABLE(NO)
VALUES(SCOTTTEMPSEQUENCENEXTVAL);
―――――――――――――――――――――――――――――――――――――
【配套程序位置】第章\ insertsequencetablesql
SCOTTTEMPSEQUENCENEXTVAL表分配下一个惟一的可用的序列号
执行SCOTTTEMPSEQUENCENEXTVAL后可以使用SCOTTTEMPSEQUENCE CURRVAL来标识上一个已经存储的序列值
()在【SQLPlus Worksheet】中可以执行查询数据表SCOTTSEQUENCE_TABLE数据的语句执行结果如图所示表明序列SCOTTSEQUENCE产生的值已经成功录入数据表中
―――――――――――――――――――――――――――――――――――――
select * from scottsequence_table;
―――――――――――――――――――――――――――――――――――――
【配套程序位置】第章\ selectsequencetablesql
序列的删除
下面介绍在【企业管理器】中如何删除序列
()在创建好的序列SEQUENCE上用单击鼠标右键在出现的快捷菜单里选择【移去】选项如图所示
()出现如图所示的【删除序列确认】界面单击【是】按钮