www.Orasql.Com
 
用户名: 密码:  验证码: 注册|找回密码 oracleawen's blog  
 
         当前位置 >> 技术论坛  发表帖子     论坛版块     查找帖子
Oracle 序列-技术论坛||Oracle高手之路—Orasql.Com!
            Oracle 序列
 
发贴人:oracle_awen
oracleawen@gmail.com448315233127.0.0.1
用户级别:管理员
发贴总数:1245
注册时间:2011-05-05 09:23:03
2011-06-01 21:20:03
什么是序列 序列是为生成唯一数字列值创建的数据库对象。 什么时候用序列 序列通常用来自动生成主键或唯一键的值。序列可以按升序排列,也可以按降序排列。 创建序列 语法: CREATE SEQUENCE sequence_name [START WITH integer] [INCREMENT BY integer] [MAXVALUE integer | NOMAXVALUE] [MINVALUE integer | NOMINVALUE] [CACHE integer] [CYCLE | NOCYCLE]; 其中: START WITH:指定要生成的第一个序号。对升序序列,其默认值为序列的最小值。对于降序序列,其默认值为序列的最大值。 INCREMENT BY:用于指定序列号之间的间隔。其默认值为1。如果n为正值,则生成的序列将按升序排列,如果n为负值,则生成的序列将按降序排列。 MAXVALUE:指定序列可以生成的最大值。 NOMAXVALUE:如果指定了NOMAXVALUE,Oracle将升序序列的最大值设为1027,将降序序列的最大值设为-1。这是默认选项。 MINVALUE:指定序列的最小值。MINVALUE必须小于或等于START WITH的值,并且小于MAXVALUE。 NOMINVALUE:如果指定了NOMINVALUE,Oracle将升序序列的最小值设为1,将降序序列的最大值设为-1026。这是默认选项。 CYCLE:指定序列在达到最大值或最小值后,将继续从头开始生成值。 NOCYCLE:指定序列在达到最大值或最小值后,将不能再继续生成值。这是默认选项。 创建序列 举例: create sequence seq start with 1 increment by 2 maxvalue 50 cache 10 cycle; 访问序列 创建了序列之后,可以通过CURRVAL和NEXTVAL伪列来访问该序列的值。 NEXTVAL:创建序列后第一次使用NEXTVAL时,将返回该序列的初始值。以后在引用NEXTVAL时,将使用INCRMENT BY子句的值来增加序列值,并返回这个新值。 CURRVAL:返回序列的当前值,即最后一次引用NEXTVAL时返回的值。 举例: insert into student values(squ.nextval,'fangcheng','male'); 用select squ.currval from dual;查看序列的当前值。 更改序列 ALTER SEQUENCE命令用于修改序列的定义。如果执行下列操作,则会修改序列: 设置或删除MINVALUE或MAXVALUE。 修改增量值。 语法: ALTER SEQUENCE sequence_name [INCREMENT BY integer] [MAXVALUE integer | NOMAXVALUE] [MINVALUE integer | NOMINVALUE] [CYCLE | NOCYCLE]; 注意:不能修改序列的START WITH参数。在修改序列时,应注意升序序列的最小值应小于最大值。 更改序列 举例: alter sequence squ increment by 3 maxvalue 60 cycle; 删除序列 语法: DROP SEQUENCE sequencename; ;

      
 
  
 Orasql.Com|E-Mail:oracleawen@gmail.com|Phone:15271942915|Copyright © 2011|All Rights Reserved|