建立一个序列,给你的表添加一列,然后插入的同时加上seq.nextval

解决方案 »

  1.   

    方法很多的呀。
    上面所说的sequence是一种,还可以用函数方式来虚拟自增长函数,即给列的default值用一个自定义函数表示。当然,这个函数并不好写,因为按照常规是不允许通过编译的。不过有一些办法可以绕过编译器。(在网上搜索一下,可以得到答案)
    ORACLE中还是不要用MSSQL的思维来做,呵呵。
      

  2.   

    CREATE SEQUENCE USERID INCREMENT BY 1 START WITH 1 
        MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE 
        NOCACHE NOORDER;CREATE OR REPLACE TRIGGER USERADD
    BEFORE INSERT ON MEMBERRG
    FOR EACH ROW
    BEGIN
        SELECT LPAD(USERID.NEXTVAL,4,'0') INTO :NEW.NUM FROM DUAL;
    END;
      

  3.   

    1.创建sequence就可以,可以不用trigger。
    create sequence seq_name
    minvalue 1
    maxvalue 999999999999999999
    start with 1
    increment by 1
    cache 20;
    可以直接在插入时调用seq_name.nextval;
    如insert into table_name(proid) values(seq_name.nextval);
    2.创建触发器:
    create or replace trigger trg_name
    before insert on table_name
    for each row
    begin
    select seq_name.nextval into :new.proid from dual;
    end;
    /
    可实现自动将proid字段加1
    插入时不用管它。
      

  4.   

    补充:Sequential能够解决这个问题,但是有一点我没有说明
    就是发生插入错误或者删除记录后,相应的记录编号就会被跳过
    不能顺序标识记录