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/yangw/p/6160434.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值