首先create sequence emp_seq increment by 1 start with 1 maxvalue 9999 cycle;
生成序列器对象
然后每当
select emp_seq.nextval from dual;
序列号加一

解决方案 »

  1.   

    主键的话:
    create sequence emp_seq increment by 1 start with 1;
      

  2.   

    我的意思是:
    假如我有一个表CO_NOTICE,其中有字段notice_id和topic,当向该表进行插入时,notice_id能自动加1,并且该字段可用于以后的查询。
      

  3.   

    create or replace function ff return number is
     n number;
    begin
      select max(notice_id)+1 into n from a;
      if n is null then
        n:= 0;
      end if;
      return n; 
    end;
    /insert into a values (ff);
      

  4.   

    建一个triger 吧 
    每次插入时都把 notice_id 设为 0
    在插入前触发,从sequence中取nextval 放在notice_id 中create sequence seq_id increment by 1 start with 1 maxvalue 99999999;
    create triger tri_test BEFORE insert
    ON table_name FOR EACH ROW    
    declare 
    id number(9);
    begin
    select seq_id.nextval into id from dual;
    new.notice_id := id;
    end;
      

  5.   

    先建一个sequence :
    create sequence seq_id increment by 1 start with 1 maxvalue 99999999;
    再试试:
    insert into  CO_NOTICE(notice_id,topic,……)
    values(seq_id.nextval,topic_value,……);
    你试试就明白的!也许我的语句称不上自动,但明白sequence_name.nextval,一切都好办。
      

  6.   

    to guostong:
    我按照你的做法进行,但进行插入操作时出现错误提示:
    ORA-04098:触发器无效且未通过重新验证
      

  7.   

    应该是:
    create sequence seq_id increment by 1 start with 1 maxvalue 99999999;
    create or replace trigger tri_test BEFORE insert
    ON table_name FOR EACH ROW    
    declare 
       id number(9);
    begin
       select seq_id.nextval into id from dual;
       :new.notice_id := id;
    end; 
    不过我觉得如果记录数超过99999999会不会有问题?因为是主键呀!
      

  8.   

    使用序列
    实现方法: 
    建立一个最小为1,最大为999999999的一个序列号会自动循环的序列create sequence 序列名 
    increment by 1 
    start with 1 
    maxvalue 999999999 
    cycle;当向表中插入数据时,SQL语句写法如下:SQL> insert into 表名 values(序列名.nextval,列1值,列2值);
      

  9.   

    这个我做过,我告诉你把,不过要给我加分才行
    建立个sequence
    在sql*plus中这样写
    create sequence sequence_name
    increment by 1
    start with 1
    maxvalue 99999999
    cycle;
    当插入记录时此字段应为sequence_name.nextval就行了