可以使用sequence和trigger:
    create sequence seq_id increment by 1 start with 1
   create trigger tr_id before insert on tabname  fro each
   begin
           select seq_id.nexval into :new.id  from dual;
   end;

解决方案 »

  1.   

    第一步:创建SEQUENCE
    create sequence s_country_id increment by 1 start with 1 maxvalue 999999999;第二步:创建一个基于该表的before insert 触发器,在触发器中使用该SEQUENCE
    CREATE OR REPLACE TRIGGER 名
    BEFORE INSERT ON 表
    REFERENCING OLD AS old NEW AS new
    FOR EACH ROW
    BEGIN
        SELECT s_country_id.NEXTVAL INTO :new.列名 FROM dual;  
    END T_A_MemberShipID;
      

  2.   

    请教第二步中“名”是什么?“表”是什么?“列名”是否就是s_country_id?
      

  3.   

    名:trigger name任意写
    表:针对哪个table进行trigger
    列名:自动增长字段
      

  4.   

    我在Oracle DBA中首先创建了一个序列,然后创建触发器,触发器主体为:
    REFERENCING OLD AS old NEW AS new
    FOR EACH ROW
    BEGIN
        SELECT 序列名.NEXTVAL INTO :new.列名 FROM dual;  
    END T_A_MemberShipID;
    为什么说无效的触发器类型?谢谢指点!