用sequence
insert into tb values(seq_name.nextval,...)
已经是最简单的方法了。

解决方案 »

  1.   

    还有就是前台程序获得最大值+1
    感觉sequence + trigger还是挺方便的。其他方法不知道。
      

  2.   

    sequence用处之一就是实现主键自增,不用干什么呢
      

  3.   

    insert into tn (id) values( (select max(id) from tn)+1)试试
      

  4.   

    sequence + INSERT trigger 是最简单的方法了,其他的办法都不如这个好
      

  5.   

    触发器吧,还可以重复使用。
    CREATE OR REPLACE TRIGGER set_checkup_no 
    BEFORE INSERT ON checkup_history 
    FOR EACH ROW 
    DECLARE 
    next_checkup_no NUMBER; 
    BEGIN 
    --Get the next checkup number from the sequence 
    SELECT checkup_no_seq.NEXTVAL 
    INTO next_checkup_no 
    FROM dual; --use the sequence number as the primary key 
    --for the record being inserted 
    :new.checkup_no := next_checkup_no; 
    END;
      

  6.   

    insert into tn (id) values( (select max(id) from tn)+1)这个方法不好
    如果一旦删除纪录的话就会与主键冲突