在oracle中如何使字段值自动增加?

解决方案 »

  1.   

    (1)第一种方法 
    ORACLE一般的做法是同时使用序列和触发器来生成一个自增字段.
    CREATE SEQUENCE SEQname
     INCREMENT BY  1
     START WITH  1
     MAXVALUE  99999999
    /
    CREATE TRIGGER TRGname
    BEFORE  INSERT  ON table_name
    REFERENCING
     NEW AS :NEW
    FOR EACH ROW
    Begin
       SELECT SEQname.NEXTVAL
         INTO :NEW.FIELDname
         FROM DUAL;
    End;(2)第二种方法:
    CREATE OR REPLACE TRIGGER TR1
      BEFORE INSERT ON temp_table
      FOR EACH ROW
    declare 
    com_num NUMBER;
    BEGIN
    SELECT MAX(ID) INTO COM_NUM FROM TEMP_TABLE; 
    :NEW.ID:=COM_NUM+1;
    END TR1;
      

  2.   

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

  3.   

    create sequence test_sequence;
    insert into test(id) values (test_sequence.nextval);
    字段值会从1自动增加的。
    你还可以创建一个before insert的trigger。
      

  4.   

    提问之前只要搜索一下以前的贴子,或者看一下精华区,找一下faq,很容易就解决了
      

  5.   

    http://expert.csdn.net/Expert/topic/1188/1188814.xml?temp=.6403009
      

  6.   

    oracle没有自增长序列,自己建个触发器。
      

  7.   

    用sequence好像他会自动增加
    我昨天使用到111条记录
    今天插入一条变成121了,不知道怎么回事
      

  8.   

    Oracle上没有自增字段,可以使用索引和触发器来达到此目的
    第一步:创建SEQUENCE
    create sequence s_country_id increment by 1 start with 1 maxvalue 999999999;
    第二步:创建一个基于该表的before insert 触发器,在触发器中使用该SEQUENCE
    create or replace trigger bef_ins_t_country_define
    before insert on t_country_define
    referencing old as old new as new for each row
    begin
    new.country_id=s_country_id.nextval;
    end;