• oracle序列sequence


    跟mysql,sqlserver不同,oracle没有auto_increment

    oracle实现自动增长的方式叫序列。

    序列不属于表,跟表没有直接绑定的关系,是属于用户的。你创建好了,用就可以了。

    查询序列:select * from user_sequences 得到的结果就是你登录的当前用户下的所有序列记录

    每条记录对应某一张表的序列,因为是直接拿来用的关系,因此要区分哪个序列属于哪个表,那么创建序列取名的时候就别乱取了

    比如我创建一个表student的序列名叫student_Sequence

    创建序列

      1.前提准备,用户得有创建的权限 CREATE SEQUENCE或者CREATE ANY SEQUENCE

      2.创建语法

      CREATE SEQUENCE seqname [ INCREMENT increment ]
          [ MINVALUE minvalue ] [ MAXVALUE maxvalue ]
          [ START start ] [ CACHE cache ] [ CYCLE ][order]

    例子:

      CREATE SEQUENCE seqName--序列名

           minvalue 1        --最小值
           INCREMENT BY 1    --递增1
           START WITH 1      --从1开始
           NOMAXvalue        --无最大值
           NOCYCLE           --不循环
           CACHE 100;        --缓存100个序列号
    表里没数据时创建序列:https://blog.csdn.net/weixin_44282540/article/details/90806301

    表里已经有数据时,新增一个主键列,添加序列:https://blog.csdn.net/qq_24583825/article/details/72484112

    create sequence student_SEQ
    minvalue 1
    maxvalue 9999
    increment by 1
    start with 1
    nocycle
    nocache

    使用序列

    语法:
    序列名.[currval/nextval]


    currval:表示当前值,新序列若没使用过nextval不能直接使用当前值,会报错;
    nextval:表示序列的下一个值
    例:查询序列的值
    select seq_name.nextval from dual; --序列seq_name的下一个值
    例:SQL语句中使用序列
    insert into 表名 value(seq_name.currval)

    hebernate注解:

    @Id

    @SequenceGenerator(name="req",sequenceName="seq_name")

    @GeneratedValue(generator="req")
    private Integer StudengID;

    参考https://www.jb51.net/article/144519.htm

      

    语法:
    drop sequence [用户名.]序列名

    例:删除序列
    dorp sequence seq_name;


    alert sequence [用户名.]序列名 [可选参数]

    例:修改序列
    alert sequence seq_name
    increment by 10
    nomaxvalue
    nocycle
    cache 10
    (修改序列只能修改这几个值,不能修改初始值)

    修改last_number

    select * from user_sequences t where t.sequence_name ='student_req'
    alter sequence student_reqincrement by 20 nocache
    select student_req.nextval from dual;
    alter sequence student_reqincrement by 1 cache 20

    最简单的是重新创建序列,start with 指定最后数值

  • 相关阅读:
    自制 os 极简教程1:写一个操作系统有多难
    面试官问我redis数据类型,我回答了8种
    全网最硬核讲解计算机启动流程
    cinder-volume Required RPC API Old
    Docker swarm 容器流量追踪
    postgres schema访问权限设置
    骑士cms < 6.0.48任意文件包含漏洞简记
    Socket学习
    网络编程
    交换机和路由器的区别
  • 原文地址:https://www.cnblogs.com/hebiao/p/14632685.html
Copyright © 2020-2023  润新知