加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle序列相关

发布时间:2020-12-12 12:42:28 所属栏目:百科 来源:网络整理
导读:一. oracle中如何实现一列的规律增长呢(通常是指number类型的列)?? 这就需要借助序列来实现了; 1. 什么是序列? 可以理解为序列是一组sql语法创建出来的函数,该函数中定义 ? ? 好了返回值的规则,每次调用都会在上一次的返回值基础上在产生一个符合规则 ? ?的

一. oracle中如何实现一列的规律增长呢(通常是指number类型的列)??

  这就需要借助序列来实现了;

  1. 什么是序列? 可以理解为序列是一组sql语法创建出来的函数,该函数中定义

  ? ? 好了返回值的规则,每次调用都会在上一次的返回值基础上在产生一个符合规则

  ? ?的结果.(类似于python中的生成器).

  2. 创建序列的语法(把定义的序列起名为seq1):

    create sequence seq1

    start with 1? ? ? ? ?# 设定从1开始生成

    increment by 1? # 设定步长为1

    minvalue 1? ? ? ? # 设定最小值为1

    maxvalue 100? ?# 设定最大值,即最大到100

    cycle? ? ? ? ? ? ? ? ?# 设定到100后循环从1开始,如不想循环则用nocycle

    nocache;? ? ? ? ? # 不使用缓存,? 或用: cache 10来指定一次缓存几个值

    如指定cache 10,其会一次生成10个值放入内存,再nextval时直接到内存中拿,而不用再调用

    序列生成,等10个用完后才会调用序列再生成10个. 优点是效率高,缺点时数据库异常时,这些放

    到内存中的值会丢失. 即所谓的跳号现象.

  3.序列创建后是全局的,可被任一用户直接使用,序列的返回值是不会因为不同用户而不同.

    select seq1.nextval from dual;? # 从序列中取值

    select seq1.currval from dual;? # 查看当前序列的值

    注意,序列在定义后,必须先nextval再currval,否则会报错

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读