始建系列必要使用CREATE,而且使用手工指定主键值那种措施时

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**

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**

相关文章