客户端工具里面有对SEQUENCE的Reset Next Value菜单的,可以重置

解决方案 »

  1.   

    谢谢jackyoung02(冷雨夜),我去试试!
    to black_snail(●男人要忍○):那有什么好方法可以保证自增长又具有连续性呢?
    偶是新手。
      

  2.   

    可以修改序列,sequence为什么无法保证连续性,楼主去找书看看,书上有比较详细的说明的.
      

  3.   

    我是在Oracle Enterprise Manager Console里面的,找不到可以将Sequence重设的地方?只有在客户端工具里面有吗?
      

  4.   

    请问zhaodan5,你用序列和触发器怎么做的自动增长,能否将你实现的方法告诉我,我正好需要用到,你作的已经完全满足我得需要,我是初学者,无法回答您的问题,但能否将你现在实现的方法告诉我,先谢谢了!!!
      

  5.   

    在sequence的存储表里有一个专门记录当前自动增长的最大顺序号,可以用update 更新即可,存储sequence的表名称我忘了,你找找.
      

  6.   

    sequence 有currval和nextval属性。可以保证按照规律得到唯一的数值。
        各位在这里讨论的所谓连续性可以说和sequence无关,因为你们说的连续性只是你个人应用中的连续性,也就是说此连续性只对你自己的具体问题有意义,而对其他的没有意义。具体地说,楼主是想他建的表中某一字段能够保证从1一直增加,不能断,并且中间有删除则需要补上。这种需求是很特殊的。sequence没有实现这种功能。
        我用sequence的经验是,不要赋予sequence其他任何意义,其他的由其它的逻辑来实现。因为sequence就是一个序列,你就应该就把它当成一个序列来用。它已经很简单而且功能强大(越用越觉得它的功能强大),将它复杂化只是削弱其功能,增加自己程序的复杂程度。
        修改currval的方法:alter  sequence  sqtest  increment  by  4 可以负增长
        再回到搂主的需求,有点怀疑楼主这样做的必要性,因为,有了断层后,按照楼主的想法,只有在新的数据插入后才会去补这些断层。那么在插入数据之前,数据就保持在有断层的状态。而且,删除数据是无规律的,也就是说,断层是随机的,要补上它,是很麻烦的一件事情,每次插入至少要遍历一次表,代价是比较大的。而这样做的好处似乎只有一个,那就是减小了自增长字段的最大值。不要说保证了表数据的连续性,刚才已经分析过了,根本没有保证表数据的连续性。如果要保证连续性,需要在删除数据的时候进行,而不是在下一次插入新数据的时候才来进行。有点像索引,不过这里是删除,删除一条,将比它大的依次减1。总的来说比较麻烦,代价很高。建议考虑性价比。
      

  7.   

    谢谢大家!
    to foxjian(胖子):不好意思,可能我没把问题说清楚。我只是想当清空数据库之后让序列也重新从初值开始而已。我的需求没有一定要保证连续性,当然如果可以会更好的。呵呵!
    to tigger1974(小老虎) :我这里也说不清,给你个网址,里面有详细介绍的,里面用的时SQL语句的方法,当然你可以用Oracle Enterprise Manager Console 方便的建自增长字段。
    http://ub1010.51.net/BBS/user_file/2002-04-10/1018438701.htm