如题
mysql在建表时增加列(比如列名为id,类型为int)的时候 有个选项是 “auto increment”
这样以后插入数据时可以不用管这个id,它会自动+1
这个功能在oracle 怎么实现

解决方案 »

  1.   

    oracle可以使用sequence类似功能.
      

  2.   

    写个触发器用序列
    create sequence seq1;
    select seq1.nextval into 主键 from dual;
      

  3.   

    在oracle用sequence来实现,也就相当与mysql中的自动增长列,
    首先建立sequence,如下:create sequence SEQ_STUDENT_ID        --这是它的名称
    minvalue 1                            --这个是表示这个sequence的最小值
    maxvalue 999999999999999999999999999  --这个是表示这个sequence的最大值
    start with 1                          --表示从哪里开始,这里表示从1开始
    increment by 1                        --表示增加大小,这里表示每次加1
    cache 20; 有一个学生表create table student(id int,name varchar(20),res varchar(100));插入数据
    insert into student values(SEQ_STUDENT_ID.nextval,'zhangsan','res');
    这个里面的SEQ_STUDENT_ID .nextval就表示自动增长,nextval是下一个值,currval表示当前sequence的值是多少这样也可以查看  select SEQ_STUDENT_ID.currvalfrom dual;  查看当前值
                    select SEQ_STUDENT_ID.nextval from dual;  查看下一个值
      

  4.   

    create sequence db_gjz_seq
    increment by 1
    start with 30006908
    nomaxvalue
    minvalue 1
    nocycle
    cache 20
    noorder;
    CREATE OR REPLACE TRIGGER tri_tz_sxbfb
    BEFORE insert on tz_sxbfb FOR EACH ROW
    when (NEW.ID IS NULL)
    declare
    begin
    select db_gjz_seq.nextval into :new.id from dual;
    end;
    表tz_sxbfb
    create table tz_sxbfb(id number,name varchar2(40))
      

  5.   

    三楼是可以的,只是还要在加一个trigger就可以了,四楼的要讲清楚啊DROP SEQUENCE SEQ_STUDENT_ID;
    create sequence SEQ_STUDENT_ID        --这是它的名称 
    minvalue 1                            --这个是表示这个sequence的最小值 
    maxvalue 999999999999999999999999999  --这个是表示这个sequence的最大值 
    start with 1                          --表示从哪里开始,这里表示从1开始 
    increment by 1                        --表示增加大小,这里表示每次加1 
    cache 20; 
    CREATE OR REPLACE TRIGGER STUDENT_ID_BIR
    BEFORE INSERT
    ON STUDENTFOR EACH ROW
    BEGIN
        if :new.UNQID is NULL then
       
            SELECT SEQ_STUDENT_ID .NEXTVAL 
        INTO :new.UNQID
      FROM dual;
     END if;
    END;
    /
    COMMIT;
      

  6.   

    建立序列啊!create sequence ss;
    insert into 表名(ss.nextval,其他的数值);