日期:2014-05-16  浏览次数:20505 次

修改sequence的自增长值
Oracle 序列(Sequence)主要用于生成流水号,Oracle EBS系统中是经常用到的。但是,有时需要修改序列初始值(START WITH)时,好多人凭感觉认为:Alter Sequence SequenceName Start With N。事实上,在Oracle Db中,修改序列没有这样的语法。没有这样的语法情况怎么办,有二种方法可以完成

        1.先删除序列,然后重新创建。不过这不是当前要讲的重点。这个方法比较方便。

        2.通过Increment By来实现修改初始值。

            例如:若序列名称是SeqTest2010_S,初始值是13,而现在要设置初始值为1020,Increment By值为:1007(1020-13)

            2.1 执行:Alter Sequence SeqTest2010_S Increment By 1007;

            2.2 执行:Select SeqTest2010_S.NextVal From Dual;

            2.3 执行:Alter Sequence SeqTest2010_S Increment By 1;
1 楼 easense2009 2012-06-21  
恩,这种方法确实比较巧妙,但是如果需求是需要把当前的Sequence改小的话就只有用第一种方法了,举个具体实例,当前sequnce为1000,需要将其改为800.个人认为Oracle应该内置一个功能可以直接更改当前Sequence值就好了,但是一般情况下Sequence还是由DBMS自动管理较好,人为可以随意更改也不见得是件好事,这可能也是Oracle为什么没有内置这样的功能的原因吧