如何让表中的字符内容自动加1.
比如,表AA
字段为id(number),caption(varchar2),code(varchar2),
id是通过HIBERNATE,在添加一条记录时,会自增长
我现在希望的是code也能通过触发器自增长.比如上一个数据是:0001;在插入一条数据时,这条记录的CODE就是0002

解决方案 »

  1.   

    CREATE SEQUENCE seq_AA1 START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
    CREATE SEQUENCE seq_AA2 START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;CREATE OR REPLACE TRIGGER tri_AA1 BEFORE INSERT ON AA
    FOR EACH ROW 
    BEGIN 
    SELECT seq_AA1.NEXTVAL INTO :NEW.id FROM dual; 
    END;
    /CREATE OR REPLACE TRIGGER tri_AA2 BEFORE INSERT ON AA
    FOR EACH ROW 
    BEGIN 
    SELECT TO_CHAR(seq_AA2.NEXTVAL,'0000') INTO :NEW.code FROM dual; 
    END;
    /
      

  2.   

    12:38:09 scott@TUNGKONG> INSERT INTO AA(caption) VALUES ('TEST');已创建 1 行。已用时间:  00: 00: 00.00
    12:38:12 scott@TUNGKONG> select * from aa;        ID CAPTION    CODE
    ---------- ---------- ----------
             1 TEST        0001已用时间:  00: 00: 00.00
    12:38:16 scott@TUNGKONG> INSERT INTO AA(caption) VALUES ('TEST2');已创建 1 行。已用时间:  00: 00: 00.00
    12:38:20 scott@TUNGKONG> select * from aa;        ID CAPTION    CODE
    ---------- ---------- ----------
             1 TEST        0001
             2 TEST2       0002已用时间:  00: 00: 00.01
      

  3.   

    用序列就好了
    比如code的序列是seq_code
    插入的时候用to_char(seq_code.nextval,'0000')