oracle就是这样的,实际上其他的数据库也是一样。而且更换id会引发许多其他的问题。如果这个表关联了许多其他的表,这些表的id也要进行相应的调整才能保证数据的一致性。

解决方案 »

  1.   

    oracle的每个表中不是自带了ROWNUM吗,不过这个提供的操作比较少只提供<或=操作
    select ROWNUM,tablename.* from tablename可以看到rownum;
      

  2.   

    删除后,更新记录。即可,前提是:该表没有外键,和别的表没有关联,否则,最好不要,用的时候用rownum
      

  3.   

    oracle中用你的方法实现自增,如果你删除掉其中的一个,系统不会补上的. 但是对排序没问题啊.
      

  4.   

    create table a(b int, cvarchar2(5));建一个序列create sequence a_seq increment by 1 start with 100;建一个触发器create or replace trigger t_abefore insert on afor each rowbeginselect s_a.nextval into :new.b from dual;end;
      

  5.   

    用序列来实现
    --建序列:
    create sequence seq_name
    increment by 1
    start with 1
    maxvalue 99999999999
    nocycle
    cache 10--调用:
        insert into table(id,name) values(seq_name.nextval,'名字');