zoukankan      html  css  js  c++  java
  • oracle 序列的使用

    序列: 是oacle提供的用于产生一系列唯一数字的数据库对象。

             自动提供自增的唯一的数值。

             共享的数据

             主要用于提供主键值

             将序列装入内存可以提高访问效率

    1.创建序列:

                1、  要有创建序列的权限 create sequence 或 create any sequence

                2、  创建序列的语法:

                        create sequence sequence   //创建序列名称                                                       create sequence seq_stu  

                        increment by  n                  //递增的序列值是n,                                                  increment by 1

                        [START WITH n]    //开始的值,递增默认是minvalue 递减是maxvalue

                       [{MAXVALUE n | NOMAXVALUE}] //最大值

                        [{MINVALUE n | NOMINVALUE}] //最小值

                        [{CYCLE | NOCYCLE}] //循环/不循环

                        [{CACHE n | NOCACHE}];//分配并存入到内存中

                  NEXTVAL 返回序列中下一个有效的值,任何用户都可以引用

      CURRVAL 中存放序列的当前值

      NEXTVAL 应在 CURRVAL 之前指定 ,二者应同时有效

    Create sequence seqEmp increment by 1 start with 1 maxvalue 3 minvalue 1

    Cycle cache 2;

    //先nextval 后 currval

    Select seqEmp.nextval  from dual; 

    Select seqEmp.currval  from dual;

    Cache<max-min/increment

    //解释

    {

    Create 创建

    Sequence 序列 seqEmop 序列名称

    Increment by 步长

    Stat with 1 开始值

    Maxvalue  最大值

    Minvalue  最小值

    Cycle 循环 nocycle 不循环

    Cache 缓存   Cache<maxvalue-minvalue/increment by//一般不采用缓存

    Nextvalue 下一个

    Currval 当前值

    }

    //实例应用

    //实现id的自动递增

    //第一步

    create table cdpt(

    id number(6),

    name varchar2(30),

    constraint pk_id primary key(id)

    );

    Create sequence seq_cdpt

    Increment by 1

    Start with 1

    Maxvalue 999999

    Minvalue 1

    Nocycle

    nocache

    insert into cdpt values(seq_cdpt.nextval,’feffefe’);

    commit;

    select * from cdpt;

    /使用序列

    会产生裂缝

    l   序列在下列情况下出现裂缝:

    •  回滚

    •  系统异常

    >多个表同时使用同一序列

    //修改序列的增量, 最大值, 最小值, 循环选项, 或是否装入内存

    alter SEQUENCE sequence  //创建序列名称

           [INCREMENT BY n]  //递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1

           [START WITH n]    //开始的值,递增默认是minvalue 递减是maxvalue

           [{MAXVALUE n | NOMAXVALUE}] //最大值

           [{MINVALUE n | NOMINVALUE}] //最小值

           [{CYCLE | NOCYCLE}] //循环/不循环

           [{CACHE n | NOCACHE}];//分配并存入到内存中

    修改序列的注意事项:

    l   必须是序列的拥有者或对序列有 ALTER 权限

    l   只有将来的序列值会被改变

    l   改变序列的初始值只能通过删除序列之后重建序列的方法实现

    删除序列

    l   使用DROP SEQUENCE 语句删除序列

    l   删除之后,序列不能再次被引用

    Alter sequence seqEmp maxvalue 5;

    Select seqEmp.nextval from dual;

    我的例子:

    Create sequence seq_stu

    Increment by 1

    Start with 1

    Maxvalue 999999

    Minvalue 1

    Nocycle

    nocache

    insert into STUDENTS (stu_id,name,age,grade)VALUES(seq_stu.nextval,'shali','14','1')
                      

  • 相关阅读:
    栏目调用 sql语句
    一场豪赌 微软的未来取决于Windows 8
    mark
    [导入].net中的如何私有部署强命名组件
    q160问题,www.q160.com,ie被篡改
    解决jdgui保存源码自动添加注释的情况
    汉诺塔问题
    软件测试 方法总结
    javascript 基础篇4 window对象,DOM
    javascript 进阶篇1 正则表达式,cookie管理,userData
  • 原文地址:https://www.cnblogs.com/lovefan/p/3388400.html
Copyright © 2011-2022 走看看