我见了一个序列往往数据库中插入自增的id,有了一个问题:
例如我今天插入了3条数据,id分别为1,2,3 明天的时候再添加id值为什么从11开始?

解决方案 »

  1.   

    你不想当中有空的ID的话,那只有用MAX(ID)的方法来解决,不过要考虑并发的问题
      

  2.   

    不想有间隙的ID,可以使用MAX(ID),但同时可能需要用到临时表用以保存别人更新或者删除时弃掉的ID。
    一个更新触发器,一个删除触发器。
      

  3.   

    用了序列了. 因为序列了, 即使没有COMMIT, 也会增加.
    序列是采用自治事务. 
      

  4.   

    用了序列了. 因为序列了, 即使没有COMMIT, 也会增加. 
    序列是采用自治事务. 
      

  5.   

    序列即使被查询也会自增的。select test.nextval from dual;查一次变一次。
      

  6.   

    ID自动增加是SEQ自动发翻的ID,可能有人点了新增,但没有做插入操作,SEQ也会自动增加的,如果不想留空的ID,就用MAX(ID+1)咯....
      

  7.   

    序列有缓存的,他并不一定是每次加固定值,在特殊情况下(比如并发),会产生跳跃。跳跃多少取决于cache属性。
    当然,没有做插入操作也会出现。这是错误,就不说了
      

  8.   

      有人取过,即使不插入,也序列也会增加,例如SELECT 序列.nextnvl from dual   序列发生器也会增加。
      

  9.   

    如果你的sequence不想让别人使用,最好的办法是控制它的授权。