请教触发器中的一些问题

xuedong1125 2011-02-17 02:42:41
需要实现以下功能:

在表A插入数据后,触发器自动将A表内的一些字段的值插入到B表中,(A表是本地表,B表是远程数据库的表,B表的数据库不能修改),插入完成后,取回表B中自动生成的主键(B表用触发器取序列的值赋给主键),然后更新到表A里。

我尝试做了一个,取回B表主键和更新到A表这两个功能,不会了。。

求高人指点,万分感激!
...全文
102 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dujunqiang2010 2011-02-17
  • 打赏
  • 举报
回复
用insert,update,trigger
minitoy 2011-02-17
  • 打赏
  • 举报
回复
假设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的值.
minitoy 2011-02-17
  • 打赏
  • 举报
回复
试了下returning不用于远程表.
xuedong1125 2011-02-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 henory_lin 的回复:]
你都能实现 A表数据插入到B表, 怎么就不能实现B表数据更新到A表呢?
用DBLINK等同于 A表和B表在同一个库下的效果...

A->B : Insert SQL;
B->A : Update SQL;

中间加了DBLINK而已
[/Quote]

问题就是不知道在触发器中语句应该怎么写。。。
xuedong1125 2011-02-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 slabcde 的回复:]
插入B表时需要在数据中加一个唯一标识,根据此唯一标识从B表中取出对应记录的主键,将主键更新到A表中。
可以在A表的触发器中完成上面的操作。

从远程数据库中查询数据需要使用DBLink,跟向远程表中插入数据类似。
[/Quote]

B表的数据结构不让动,没有能插入唯一标识的字段。
henory_lin 2011-02-17
  • 打赏
  • 举报
回复
你都能实现 A表数据插入到B表, 怎么就不能实现B表数据更新到A表呢?
用DBLINK等同于 A表和B表在同一个库下的效果...

A->B : Insert SQL;
B->A : Update SQL;

中间加了DBLINK而已
爱吃面条 2011-02-17
  • 打赏
  • 举报
回复
插入B表时需要在数据中加一个唯一标识,根据此唯一标识从B表中取出对应记录的主键,将主键更新到A表中。
可以在A表的触发器中完成上面的操作。

从远程数据库中查询数据需要使用DBLink,跟向远程表中插入数据类似。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧