第一个的id是第二个表的外键,id都是sequence,如何写个事务两张表一起insert,当insert第二张表时,要用第一个的id,如何取啊?
高手们帮帮忙啊... ...

解决方案 »

  1.   

    序列跟表其实是两回事,并无对应关系
    你访问
    序列.Currval
    就可以得到当前值了,不过这个方法有点危险,如果在这个期间有别人操作这个序列的话
    所以你可以先用
    序列.nextval
    得到应该插入的id值,然后在这两个表中都使用这个值
      

  2.   

    begin transaction 
      DECLARE n=表1序列.nextval ;
      DECLARE m=表2序列.nextval;int insert into 表1(id)
     values(n);
    insert into 表2(id)
     values(m);
    if @@ERROR = 0
    begin
         commit transaction;
    end
    else
    begin
        rollback transaction;
    end
    像这样插入数据,在oracle中如何写啊??
      

  3.   

    nextval insert  两张表  不就完事了吗
      

  4.   

    begin transaction  
      DECLARE n=表1序列.nextval ;
      DECLARE m=表2序列.nextval;int insert into 表1(id)
     values(n);
    insert into 表2(id)
     values(m);
    if @@ERROR = 0
    begin
      commit transaction;
    end
    else
    begin
      rollback transaction;
    end
    像这样插入数据,在oracle中如何写啊?? 
      

  5.   

    declare
       n int :=±í1ÐòÁÐ.nextval;
       m int :=±í2ÐòÁÐ.nextval;
    begin
     insert into ±í1(id) values(n);
     insert into ±í2(id) values(m);
    end;
      

  6.   


    insert into 表2(id,pid) values(m,n);
    这样不行吗
      

  7.   

    改用sequence了,而且sequence不能给变量赋值,只能用select。