需要实现以下功能:在表A插入数据后,触发器自动将A表内的一些字段的值插入到B表中,(A表是本地表,B表是远程数据库的表,B表的数据库不能修改),插入完成后,取回表B中自动生成的主键(B表用触发器取序列的值赋给主键),然后更新到表A里。我尝试做了一个,取回B表主键和更新到A表这两个功能,不会了。。求高人指点,万分感激!

解决方案 »

  1.   

    插入B表时需要在数据中加一个唯一标识,根据此唯一标识从B表中取出对应记录的主键,将主键更新到A表中。
    可以在A表的触发器中完成上面的操作。从远程数据库中查询数据需要使用DBLink,跟向远程表中插入数据类似。
      

  2.   

    你都能实现 A表数据插入到B表, 怎么就不能实现B表数据更新到A表呢? 
    用DBLINK等同于 A表和B表在同一个库下的效果...  A->B : Insert SQL;
      B->A : Update SQL;    中间加了DBLINK而已
      

  3.   

    假设b数据库的表结构为a(id number primary key,name varchar2(10));
    则你在本库建立一个表aa(id number primary key,name varchar2(10),bid number);
    aa上也建立一个trigger来取主键aa.id.
    然后程序中先将要插入b数据库a表的数据插入到aa表,利用returning语句返回aa.id,然后取aa.id,aa.name插入b数据库的a表.
    在a表的trigger里先取序列的nextval,然后按:new.id更新aa表的bid字段为序列的nextval,然后程序从aa表中取bid的值.