Oracleoracle体系的创办和使用

oracle 序列的创建与行使

 (2012-03-15
16:14:09)

—————————————————————————————————转载——————————————————————————————————————-

    在Oracle中,可以采纳连串自动生成一个整数行列,重要用于自动为表中的数据类型的主键列提供有序的绝无仅有值,这样就能够避免在向表中添加多少时,手工指定主键值。而且使用手工指定主键值这种格局时,由于主键值不容许再次,因而它要求操作人员在指定主键值时自己判断新增长的值是否早已存在,那很显眼是不可取的。

(1)创立系列

队列与视图一样,并不占用实际的仓储空间,只是在数据字典中保存它的定义音讯。成立序列需要运用CREATE
SEQUENCE语句,其语法如下:

CREATE SEQUENCE [schema]。sequence_name  –序列名

[ START WITH start_Oracle,number ]  –先导数字

[ INCREMENT BY increment_number ]  –每一遍加几

[ MINVALUE minvalue | NOMINVALUE ]  –最小值

[ MAXVALUE maxvalue | NOMAXVALUE ]  –最大值

[ CACHE cache_number | NOCACHE ]  

[ CYCLE | NOCYCLE ]  –是否循环

[ ORDER | NOORDER ];  

瞩目:cache参数指定内存预分配的行列数的个数,默认20个,为了加速访问速度。

      order参数指定是否比照请求次序生成序列号,一般选拔体系生成主键值时,影响不大。

(2)体系中的多少个伪列

Currval:用于获取体系的眼前值,必须再利用nextval三遍将来才能利用。

—**nextval:用于获取体系的下一个值,首次使用重临的是初步值,向表中的主键赋值的时候利用此伪列。**

(3)连串举例 

  • 首先创设student表:

    create table student(

    sid number(4) primary key,

    sname varchar2(8) not null

    );

  • 创建student_seq序列

    create sequence student_seq

    start with 1

    increment by 1

    nocache nocycle order;

  • 创建触发器(使用student_seq序列)

 

 

     create trigger tr_student

    before insert on student

    for each row

    begin

    select student_seq into :new.sid from dual;

    end;

  • 安插数据:

    SQL> insert into student(sname) values(‘zhang’)

    已创建 1 行。

    SQL> insert into student(sname) values(‘li’);

    已创建 1 行。

    SQL> insert into student(sname) values(‘wang’)

    已创建 1 行。

  • 查询数据:
  • SQL> select * from student;
  • **       SID SNAME

            1  zhang
            2  li
            3  wang**

相关文章