• 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 指定最后数值

  • 相关阅读:
    tomcat的OutOfMemoryError内存溢出解决方法
    转:动态table分页(ORCALE)
    转: 根据屏幕分辨率,浏览器调用不同css
    转:只能选择GridView中的一个CheckBox(单选CheckBox)
    转:tomcat安全设置
    Tomcat内存设置详解
    Dos命令删除添加新服务
    卸载oracle 10g
    转:oracle:win7手工卸载oracle数据库11g
    win7 下安装oracle 10 g
  • 原文地址:https://www.cnblogs.com/hebiao/p/14632685.html
Copyright © 2020-2023  润新知