当前位置: 代码迷 >> Oracle面试 >> oracle 中某序列不完整、有缺失,怎么找出这些缺失的序列号并保存上来
  详细解决方案

oracle 中某序列不完整、有缺失,怎么找出这些缺失的序列号并保存上来

热度:7757   发布时间:2013-02-26 00:00:00.0
oracle 中某序列不完整、有缺失,如何找出这些缺失的序列号并保存下来?
oracle 中某序列不完整、有缺失,如何找出这些缺失的序列号并保存下来?
------解决方案--------------------------------------------------------
用递归查询 connect by 号 = prior 号+1 

搜索连续号专题
------解决方案--------------------------------------------------------

dex@ORCL> insert into t select level from dual connect by level <= 100 ;

100 rows created.

dex@ORCL> commit ;

Commit complete.

dex@ORCL> delete t where n in (1,10,14,16,17,20,30,50) ;

8 rows deleted.

dex@ORCL> commit ;

Commit complete.

dex@ORCL> select count(*) from t  ;

  COUNT(*)
----------
        92


加删个边界值
dex@ORCL> delete t where n = 100 ;

1 row deleted.

dex@ORCL> commit
  2  ;

Commit complete.

dex@ORCL> select count(*) from t  ;

  COUNT(*)
----------
        91
序列是什么形式的自己构造
dex@ORCL> with full_seq as
  2   (select level as numb from dual connect by level <= 100)
  3  select seq.numb
  4    from full_seq seq
  5   where seq.numb not in (select n from t)
  6   order by seq.numb;

      NUMB
----------
         1
        10
        14
        16
        17
        20
        30
        50
       100

9 rows selected.


------解决方案--------------------------------------------------------
引用:
SQL code


dex@ORCL> insert into t select level from dual connect by level <= 100 ;

100 rows created.

dex@ORCL> commit ;

Commit complete.

dex@ORCL> delete t where n in (1,10,14,16,17,20……


真的谢谢你
  相关解决方案