需要实现以下功能:在表A插入数据后,触发器自动将A表内的一些字段的值插入到B表中,(A表是本地表,B表是远程数据库的表,B表的数据库不能修改),插入完成后,取回表B中自动生成的主键(B表用触发器取序列的值赋给主键),然后更新到表A里。我尝试做了一个,取回B表主键和更新到A表这两个功能,不会了。。求高人指点,万分感激!
解决方案 »
- 关于Oracle数据库某一段的查询——为了分页
- VIO_ADMIN.SYS_LOB0000027183C00004$$无法通过5314958(在表空间VIO_PIC中)扩展ORA-06512: 在"SYS.DBMS_LOB", line 700
- in+Count某字段的时候如何把结果行补零?
- 数据库怎么样调优?
- 四舍五入算法差值如何计算
- 以前是学习ms sql server ,现在想学习oracle 请高手们给些建议或是推荐几本书
- SQL编码还原
- 小问题送分来了!要的快来
- oracle存储过程for循环中的异常处理
- oracle 安装时,环境变量,没有设置节点
- 求自增函数
- 有点怪的包体,求答疑
可以在A表的触发器中完成上面的操作。从远程数据库中查询数据需要使用DBLink,跟向远程表中插入数据类似。
用DBLINK等同于 A表和B表在同一个库下的效果... A->B : Insert SQL;
B->A : Update SQL; 中间加了DBLINK而已
则你在本库建立一个表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的值.