1.一个表需要有一个自增列ID
2.我已建立了table和sequence
-- Create sequence 
create sequence S_sbfl
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
cache 20;
 问题:我怎么能够让table中的ID与S_sbfl相对应呢?

解决方案 »

  1.   

    insert into table(ID) values(S_sbfl.nextval)
      

  2.   


    insert into sbfl(sbfl_id) values(S_sbfl.nextval)提示
    ORA-000942:表或视图不存在
      

  3.   

    怎么会?
    你创建表和序列的用户和你登录plsql的用户是同一个吗?
    实在不行 把你的建表语句贴出来
    没道理不行的
      

  4.   

    insert into sbfl(sbfl_id) values(S_sbfl.nextval)
    貌似需要insert into sbfl select S_sbfl.nextval from dual
      

  5.   

    create table "sbfl"  (
       "sbfl_id"    NVARCHAR2(2)                    not null,
       "sbfl_name"  NVARCHAR2(200),
       constraint PK_YS_CLHC_SBFL primary key ("sbfl_id")
    );-- Create sequence 
    create sequence S_SBFL
    minvalue 1
    maxvalue 999999999999999999999999999
    start with 1
    increment by 1
    cache 20;这是我建立的表和队列
      

  6.   

    create table "sbfl" (
      "sbfl_id" NVARCHAR2(2) not null,
      "sbfl_name" NVARCHAR2(200),
      constraint PK_YS_CLHC_SBFL primary key ("sbfl_id")
    );
    大哥,ORACLE中,建表和字段的时候,不要加双引号,,
    这样会造成歧义的,
      

  7.   


    create table sbfl(
           sbfl_id varchar2(2),
           sfbl_name varchar2(200),
           constraint pk_ys_clhc_sbfl primary key(sbfl_id))
    /
    create sequence s_sbfl
    start with 1
    increment by 1
    minvalue 1
    maxvalue 99--999999999999999999999999999
               --这里最大值只设为两位数字就可以了
               --因为你的id只是只能存放2个字符
    cache 20
    nocycle
    /
    --方法一:使用触发器
    create or replace trigger tri_sbfl_id
    for each row
    begin
         select s_sbfl.nextval into :new.sbfl_id from dual;
    end tri_sbfl_id;
    /
    insert into sbfl(sbfl_name)
    values('aaaaaaaaaaaaa');
    insert into sbfl(sbfl_name)
    values('bbbbbbbbbbbbb');
    /
    --方法二:或者不使用触发器,直接在inert语句中引用:
    insert into sbfl(sfbl_id,sbfl_name)
    values (s_sbfl.nextval,'ccccccccccccccccc');
    --记住,首次只能引用序列的伪列:nextval
     insert语句中sequence的使用方法
      

  8.   


    create or replace trigger tri_sbfl_id
    before insert on sbfl--不要忘记了触发事件
    for each row
    begin
         select s_sbfl.nextval into :new.sbfl_id from dual;
    end tri_sbfl_id;
    /