解决方案 »

  1.   

    Oracle是使用序列来实现自增长的(sequence),你首先得创建一个序列,
    CREATE SEQUENCE 序列名
    [INCREMENT BY n]
    [START WITH n]
    [{MAXVALUE/ MINVALUE n|NOMAXVALUE}]
    [{CYCLE|NOCYCLE}]
    [{CACHE n|NOCACHE}];
    例如:
    create sequence seq_student
    increment by 1
    start with 1;
    在insert的时候,使用序列值(select seq_student.nextval from dual),这样的方式来实现自增长!
    nextval和currval两个伪列
    希望能帮到你!
      

  2.   


    不用SQL 语句直接  添加序列 ,就像将ID设置为主键一样  怎么做呢?
      

  3.   


    TRIGGER 不能滥用, 但是适当的用点还是很方便的. 在INSERT 的时候用TRIGGER来取得这个自增ID就可以了.
    CREATE OR REPLACE TRIGGER TR_SEQ_TABLENAME
      BEFORE INSERT ON TABLENAME
      FOR EACH ROW
    BEGIN
      SELECT SEQ_TABLENAME.NEXTVAL INTO :NEW.ID FROM DUAL;
    END;
      

  4.   

    LZ 是怎么设置的自增列?确定是 ORACLE 的库吗?
      

  5.   

    insert into a(id) values(yourseq.nextval);
      

  6.   

    不能直接插入null,你可以创建一个序列,insert的时候id的value为序列的值就可以实现
      

  7.   

    那是sql server的语法吧 oracle用sequence
      

  8.   

    设置主键的DEFAULT约束为 SEQ_NAME.NEXTVAL
      

  9.   

    楼上那种通过设置默认值也好,还是建立sequence再加上trigger也好,这两个都可以。
    两个略微区别于空的时候。
      

  10.   

    像楼主所说的不是在存储过程中直接插入序列,可以用序列结合触发器完成,不过触发器一般慎用(以下是我的一个实例)
    --创建序列
    create sequence EPLINFOS_seq start with 1 increment by 1; 
    --触发器
    drop  trigger EPLINFOS_trigger 
    create  trigger EPLINFOS_trigger       
    before insert on EPLINFOS       
    for each row       
    begin       
    select EPLINFOS_seq.nextval into :new.IID from dual;      
    end ;