序列用来自动产生唯一ID。
如果在触发器中得用序列,在插入时可以不管ID,有触发器自动执行。
如果用语句插入也行,就像 insert into table_name(id,name,...) values(seq_name.nextval,'name',..);
一般就这两种用法:
1.创建sequence
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.创建触发器(同时要创建sequence):
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;
/

解决方案 »

  1.   

    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;
      

  2.   

    没太明白你的意思!
    sequence.nextval用一次就增加一个步长。
      

  3.   

    你所说表中的那个id时不是rowid啊!
    他是系统中具有的!
    一般在表中建立一个字段,用于存储序列产生的值来实现id(所需要的编号)的自动增长和唯一性!
    一般用序列产生得值插入或更新表,如每插入一条纪录:
    insert into A(id,name,..) values(sequence.nextval,'张三',..)在查询中:
     select * from A where id='12'(假如)