手工业钦定主键值,创立连串供给运用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参数钦点内部存款和储蓄器预分配的行列数的个数,暗许21个,为了加快访问速度。

      order参数钦命是不是比照请求次序生成类别号,一般选择体系生成主键值时,影响非常小。

(2)体系中的三个伪列

Currval:用于获取种类的当下值,必须再使用nextval三遍之后才能使用。

—**nextval:用于获取体系的下1个值,第3遍选拔再次来到的是早先值,向表中的主键赋值的时候利用此伪列。**

(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中,能够使用连串自动生成3个整数行列,首要用于自动为表中的数据类型的主键列提供有序的唯一值,那样就可避防止在向表中添加多少时,手工业钦定主键值。而且使用手工业钦定主键值那种格局时,由于主键值不容许再一次,由此它供给操作人士在内定主键值时本人看清新加上的值是或不是已经存在,那很强烈是不可取的。

(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参数内定内存预分配的行列数的个数,暗中认可十多个,为了加快访问速度。

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

相关文章