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