oracle中不能自动获得,oracle中也不能自动插入编号,要用触发器+序列才能实现自动插入
create sequence SEQ1
minvalue 1
maxvalue 99999999999
start with 1
increment by 1
cache 20;只能是
select seq1.nextval into idnum from dual;
insert into a(id,t1,t2) values(idnum,'a','b');
insert into b(t3,t4) values(idnum,'c');

解决方案 »

  1.   

    或者用
    insert into a(id,t1,t2) values(idnum,'a','b');
    select seq1.currval into idnum from dual;
    insert into b(t3,t4) values(idnum,'c');
      

  2.   

    刚才写错了,呵呵,应该这样
    insert into a(id,t1,t2) values(seq1.nextval,'a','b');
    insert into b(t3,t4) values(seq1.currval,'c');
      

  3.   

    ^_^,这可不一定,如果另外一个用户在seq1.nextval后取了seq1.nextval,那你的seq1.currval不就不对了
      

  4.   

    select seq1.nextval into idnum from dual;
    insert into a(id,t1,t2) values(idnum,'a','b');
    insert into b(t3,t4) values(idnum,'c');我现在已经建了触发器了,insert into a(id,t1,t2) values(idnum,'a','b');那个idnum在这里没用的。
    我想 把这些语句包一起执行,可是不行的。
    begin
    select seq1.nextval into idnum from dual;
    insert into a(id,t1,t2) values(idnum,'a','b');
    insert into b(t3,t4) values(idnum,'c');
    end
    这样会错的。
    指教了!(我不想看到seq1这个名字,通过select 刚才那条记录的自动编号可以吗?)