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;

      

      

  • 相关阅读:
    用才情绽放的幸福之花
    我的爱车,你在哪里
    爱在网络,有没有错
    假如能抱着美女写诗
    只想爱你
    创业者和爱因斯坦的10大共同点(不是不可比的)
    心的感谢
    成大事必备9种能力.9种手段.9种心态
    一颗新星在陨落
    C++/C学习笔记(九)
  • 原文地址:https://www.cnblogs.com/Latiny/p/6806035.html
Copyright © 2011-2022 走看看