请问?
我在程序里为数据库表t1新添了一行记录,在这条记录的id字段使用abcid.nextval得到的序号,然后我马上要继续在t2表新添一行记录,其中在t2表字段t1id中要存放刚刚t1表中id字段相同的数值,我应改怎么做呢?insert into t1 (id) values (abcid.nextval);
insert into t2 (id,t1id) values (abcid.nextval,???);

解决方案 »

  1.   

    序列每次使用,就会自动增长。不管是谁使用了它。比如a表使用了序列值14,接下来b表在想使用同一个序列的序列值14是不可能的。你这种情况,可以写一个基于t1的trigger,使得一个序列值,同时插入两个不同的表
      

  2.   

    select adcid.Currval from dual
    取得序列的当前值
    可以把两个操作放在一个存储过程里完成或者在插入的时候使用触发器
      

  3.   

    declare n_cur number;
    begin
    insert into t1 (id) values (abcid.nextval);
    select abcid.currval into n_cur from dual;
    insert into t2 (id,t1id) values (abcid.nextval,n_cur);
    end;
    /
      

  4.   

    用中间变量,将取出来的序列写出变量中,通过变量赋值,如:
    declare
      v_id number;
    begin
      select abcid.nextval into v_id from dual;
      insert into table_name1(id,...) values(v_id,...);
      insert into table_name2(id,...) values(v_id,...);
    end;