以前用sql用的 今天刚接触oracle 就遇到一个问题
请问各位 如何在一个表内建立一个自增id呢 
id为字符型 前面有一段字符窜 后面为固定格式的自增序列如:XXXXX000001  步长为1 自增到 XXXX999999急啊 在线等

解决方案 »

  1.   

    使用序列
    create sequence QID
    minvalue 1
    maxvalue 999999999999999999999999999
    start with 1
    increment by 1
    cache 20;
      

  2.   

    在oracle中没有自增字段这种说法,但是oracle提供了一个sequence和获取sequence的方法,可以完成类似于sql server或者access中的自增字段,sequence的创建方法如下(以你的要求为例):
    create sequence myseq
    minvalue XXXXX000001
    maxvalue XXXXX999999
    start with XXXXX000001
    increment by 1然后你需要通过select SEQ_TASK.nextval in myvar from dual获取下一个数字,将获取的数字放进你的变量中(myvar是你定义的变量,然后需要在insert纪录的时候将myvar赋值为相应的字段就可以了 )
      

  3.   

    CREATE SEQUENCE a.SEQ_ID START WITH 1 INCREMENT BY 1 MAXVALUE 1E30 NOCYCLE NOCACHE;
    一种就是在INSERT 语句中不对ID字段赋值,通过触发器实现:CREATE OR REPLACE TRIGGER a.TRIG_a_ID
    BEFORE INSERT ON a.a
    FOR EACH ROW
    BEGIN
      IF (:NEW.ID IS NULL) THEN
        SELECT 'A' || SEQ_ID.NEXTVAL INTO :NEW.ID FROM DUAL;
      END IF;
    END;
    /也可以直接写在 INSER 语句中:INSERT INTO A.A(ID,....)VALUES('A' || SEQ_ID.NEXTVAL,....);