• 【Oracle】详解Oracle中的序列


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

    •   自动提供唯一的数值
    •   共享对象
    •   主要用于提供主键值
    •   将序列值装入内存可以提高访问效率

    创建序列:

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

    2、  创建序列的语法

    CREATE SEQUENCE sequence  //创建序列名

           [INCREMENT BY n]  //递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是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<(CEIL (MAXVALUE - MINVALUE)) / ABS (INCREMENT),这里的Cache的值应该比后面的小,但是Cache等于后面的值也不会出错,但是Cache的最小值是2,点我查看官方描述

    //解释

    {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;

    使用序列

    使用序列,会产生裂缝

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

    •  回滚

    •  系统异常

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

    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}];//分配并存入到内存中

    修改序列的注意事项:

    •    必须是序列的拥有者或对序列有 ALTER 权限
    •    只有将来的序列值会被改变
    •    改变序列的初始值只能通过删除序列之后重建序列的方法实现

    Alter sequence seqEmp maxvalue 5;

    删除序列

       使用DROP SEQUENCE 语句删除序列

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

    Select seqEmp.nextval from dual;

    原文连接:Oracle序列详解

  • 相关阅读:
    vue+element ui 表格自定义样式溢出隐藏
    vue自定义指令directives使用及生命周期
    前端如何下载文件
    js实现活动倒计时
    echarts自定义提示框数据
    vue项目如何刷新当前页面
    数据库——关于索引
    Javascript节点选择
    asp.net 身份验证(Update)
    ASP.config配置
  • 原文地址:https://www.cnblogs.com/HDK2016/p/6895332.html
Copyright © 2020-2023  润新知