小弟以前是学SQL,现在要用Oracle数据库,遇到关于自增的问题,忘高手解答一下。
create sequence class_seq increment by 1 start with 1 MAXVALUE 999999 NOCYCLE NOCACHE;上面是一个自增的能帮我解释一下吗?
比如这是什么意思?sequence class_seq用这个自增的时候听说好象还要用什么触发器.请问怎么用?
INSERT INTO CENTER.NEW_CMD_RECORD(ID,SEND_MAN) VALUES('自增的列','王二')
                       

解决方案 »

  1.   

    sequence是关键字,class_seq是创建的序列名字
    整个序列的意思就是序列从1开始,每次增加1,最大值为999999
      

  2.   

    '自增的列'使用class_seq.nextval代替就可以了
      

  3.   

    create sequence class_seq increment by 1 start with 1 
    MAXVALUE 999999 ------这个指的是序列的最大值
    NOCYCLE --------这个指定如果到了最大的值后,class_seq.nextval就没有值了
    NOCACHE -------这个如果是nocache指定不预放内存,如果是cache 2,就一次存两个到内存,
    class_seq.nextval就取内存里的,如果突然断电,内存里的数据消失,就再次取数据到内存,
    这样就可能导致跳号。
      

  4.   

    参数见楼上,给个示例:
    ----------创建序列
    CREATE SEQUENCE SEQ_WEATHER
      START With 1
      INCREMENT BY 1
      --MAXVALUE 999999999999999999999999999
      CACHE 20;----------创建触发器,实现添加表数据时id自增
    CREATE OR REPLACE TRIGGER TR_WEATHER
    BEFORE INSERT ON WEATHER
    FOR EACH ROW
    BEGIN
    SELECT SEQ_WEATHER.NEXTVAL INTO :NEW.ID from DUAL;
    END;
      

  5.   

    参数见楼上,给个示例:
    ------------创建序列
    CREATE SEQUENCE SEQ_WEATHER
      START With 1
      INCREMENT BY 1
      --MAXVALUE 999999999999999999999999999
      CACHE 20;
    -----------创建触发器,实现添加表数据时id自增
    CREATE OR REPLACE TRIGGER TR_WEATHER
    BEFORE INSERT ON WEATHER
    FOR EACH ROW
    BEGIN
    SELECT SEQ_WEATHER.NEXTVAL INTO :NEW.ID from DUAL;
    END;