oracle序列的始建与运用

oracle 序列的创立和使用

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

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

    在Oracle中,可以应用序列自动生成一个整数排,主要用于自动吗表中的数据类型的主键列提供有序的绝无仅有值,这样便可以避以向阳表中补充加多少时,手工指定主键值。而且以手工指定主键值这种方法时,由于主键值不允许再,因此她要求操作人员以指定主键值时自己看清新增长的价是否已经在,这特别引人注目是不长的。

(1)创建行

班及视图一样,并无占用实际的储存空间,只是在数字典中保留其的定义信息。创建行需要运用CREATE
SEQUENCE语句,其语法如下:

CREATE SEQUENCE [schema]。sequence_name  –序列名

[ START WITH start_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**

相关文章