zoukankan      html  css  js  c++  java
  • Oracle 修改序列的初始值

    Oracle 序列(Sequence)主要用于生成主键。但是,有时需要修改序列初始值(START WITH)时,好多人凭感觉认为:Alter Sequence SequenceName Start With N。事实上,在Oracle Db中,修改序列没有这样的语法。
      1.先删除序列,然后重新创建。不过这不是当前要讲的重点。这个方法比较方便。
      2.通过Increment By来实现修改初始值。
      例如:若序列名称是BASE_LOG_SEQ,初始值是12,而现在要设置初始值为1024,Increment By值为:1012(1024-12)
      
    -- 如下三步骤完成...
    Alter Sequence BASE_LOG_SEQ Increment By 1012;
    Select BASE_LOG_SEQ.nextval FROM dual;
    Alter Sequence BASE_LOG_SEQ Increment By 1;

      Java 调用 Hibernate API实现

        // 由于Oracle不支持  alert sequence seqName start with 1; 这种形式,故采用曲线形式
            BigDecimal incrementNo = new BigDecimal(seq.getColumnsMax()).subtract(new BigDecimal(seq.getSeqNext()));
            // 步骤1
            String sql1 = "ALTER SEQUENCE "+ seq.getSeqName() + " Increment By "+ incrementNo.longValue() ;
            super.getCurrentSession().createSQLQuery(sql1).executeUpdate();
            //步骤2
            String sql2 =" SELECT "+seq.getSeqName()+".nextval from dual ";
            super.getCurrentSession().createSQLQuery(sql2).list();
            //步骤3
            String sql3 = "ALTER SEQUENCE "+ seq.getSeqName() + " Increment By 1 " ;
            super.getCurrentSession().createSQLQuery(sql3).executeUpdate();




    ----------- 赠人玫瑰,手有余香     如果本文对您有所帮助,动动手指扫一扫哟   么么哒 -----------


    未经作者 https://www.cnblogs.com/xin1006/ 梦相随1006 同意,不得擅自转载本文,否则后果自负
  • 相关阅读:
    redis事务
    redis杂项
    redis的发布订阅
    redis持久化
    redis常用配置参考.txt
    python语法流程控制
    用户交互与数据类型
    编程语言与Python介绍
    计算机的五大组成部分
    jieba库的基本介绍及爬虫基本操作
  • 原文地址:https://www.cnblogs.com/xin1006/p/6160434.html
Copyright © 2011-2022 走看看