orcale自动增长列怎么弄?
sqlserver数据库转orcale数据,我要将其中几个列改为自动增长列

解决方案 »

  1.   

    同时使用序列和触发器来生成一个自增字段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.   

    Creating a Sequence: ExampleThe following statement creates the sequence customers_seq in the sample schema oe. This sequence could be used to provide customer ID numbers when rows are added to the customers table.CREATE SEQUENCE customers_seq
     START WITH     1000
     INCREMENT BY   1
     NOCACHE
     NOCYCLE;The first reference to customers_seq.nextval returns 1000. The second returns 1001. Each subsequent reference will return a value 1 greater than the previous reference.
      

  3.   

    oracle中因为没有int类型的自动增长列
    所以可以用序列的方式来代替自动增长
    至于序列怎么写 1楼说的很清楚
      

  4.   

    orcale没有自动增长列,且自动增长列会有性能问题,用序列替换或获取最大值+1或加个表专门用来管理其值
      

  5.   

    oracle没有标识列,自动增长的这个概念需要用序列来实现CREATE SEQUENCE sid
    INCREMENT BY 1
    START WITH 1
    MAXVALUE 99999999select sid.nextval, --取下一个序列
           sid.currval --取当前序列
    from dual;