zoukankan      html  css  js  c++  java
  • Oracle 序列(sequence)

      序列(sequence) 是Oracle提供的用于生成一系列唯一数字的数据库对象。它会自动生成顺序递增或者递减的序列号,以实现自动提供唯一的主键值。序列可以在多用户并发环境中使用,并且可以为所有用户生成不重复的顺序数字,而不需要任何额外的I/O开销。

      序列创建的语法:

      create sequence <seq_name>

      [start with n]

      [increment by n]

      [minvalue n|nominvalue]

      [maxvalue n|nomaxvalue]

      [cache n|nocache]

      [cycle|nocycle]

      [order|noorder]

      

      seq_name: 序列名

      start: 指定序列开始位置 n

      increment by: 表示序列的增量,正数生成一个递增序列,负数生成一个递减序列,默认值为1.

      minvalue: 序列的最小值

      maxvalue: 序列的最大值

      cache: 决定是否是否产生序列号分配,并存储在内存中

      cycle: 当序列达到最大值或者最小值,可以复位并继续下去,如果达到极限则生成的下一个数为最小值或者最大值,如果为nocycle,达到最大值或者最小值,试图获取下一个值时报错

      order: 保证生成的序列是按顺序产生的

      实例:

    create sequence seq_test_id
    start with 10000
    increment by 10
    minvalue 1000
    maxvalue 1000000
    cache 50;

     

    查看当前值与下一个值

    select seq_test_id.currval, seq_test_id.nextval from dual;

    使用序列 seq_test_id,注意只能用nextval,不能用currval,否则序列不会自增到下一个值

    insert into t_test(id, name)
    values (seq_test_id.nextval, 'latiny1');

    insert into t_test(id, name)
    values (seq_test_id.nextval, 'latiny2');

    select *
    from t_test;

     

    修改序列

    alter sequence seq_test_id
    maxvalue 10000000
    increment by 1000
    cache 100;

     

    insert into t_test(id, name)
    values (seq_test_id.nextval, 'latiny3');

     

    select *
    from t_test;

     

    删除序列

    drop sequence seq_test_id;

     

    查询当前用户的序列信息

    select *
    from user_sequences;

      

      

  • 相关阅读:
    金牙与肉屑
    科学研究的动机以及雄心
    适度的自我吹嘘
    ubuntu12启用root账户
    有很多文件夹是受系统保护的
    vs2012换肤功能,vs2012主题及自定义主题
    Ubuntu navicat for mysql 安装和使用
    Asp.Net MVC4 Bundle捆绑压缩技术
    64位Windows Jmail组件报错解决方案
    C#检测上传文件的真实类型
  • 原文地址:https://www.cnblogs.com/Latiny/p/6806035.html
Copyright © 2011-2022 走看看