oracle 序列的创建与使用

学习了序列,一直没怎么有机会用过,做了个简单的使用练习。


在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
    ---------- --------
             zhang
             li
             wang

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值