zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    java知识点--重写与重载
    java基础知识分析: final , finally,finalize
    jdbc对 数据库的数据进行增删改(两个类)
    数据库的创建,字段的增加删除,创建表单,过滤(个人笔记)不详细
    sql数据库在登录异常时 ora-03114:未连接到ORACLE怎么办
    用table类型布局一个新闻网页
    c/s用户与服务器之间的传输
    javascript输入用户名,在服务器中显示出了
    三级联动省市区
    本周总结
  • 原文地址:https://www.cnblogs.com/Stir-friedEggplant/p/8243437.html
Copyright © 2011-2022 走看看