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();

 

 

 






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM