现在我有两台服务器:服务器A和服务器B。数据库用Oracle。 服务器A的表TA,服务器B的表TB。 原来的设定是在服务器A上写触发器,通过数据库连接来将TA上的数据更新到服务器B上的表TB。 但是为了保密触发器代码的考虑,我想将触发器写在服务器B上,然后再用视图+数据库连接的方式监听服务器A的表TA,再将数据更新到表TB。 请问这有什么实现方式么? 我看过了一下Oracle的视图触发器,貌似INSTEAD OF触发器不能实现这个功能。 求高人指导。 

解决方案 »

  1.   

    触发器无法监听远程表如果要保密,太简单了,A上写个触发器,把关键数据通过dblink insert到B的视图里,这个过程各种打乱结构。B的视图上写个instead of 触发器,做真正的业务逻辑
      

  2.   

    此外,同义词 SYNONYM也可能是一个不错的解决方案,可以隐藏对象的真实名称与所有者,也可以使分布式数据库中远程对象的位置透明化,因此可以提供一定程度的安全性.你可以选择创建公有或者私有的同义词.有一点要注意就是同义词本身并不具有安全性,GRANT任何权限给同义词,也意味着你把同样的权限赋给了底层.CREATE PUBLIC SYNONYM SOMETABLE FOR SOMETABLEONTA@MECHINEA;后面的是你的DATABASE LINKCREATE DATABASE LINK MECHINEA CONNECT TO XXX IDENTIFIED BY XXX USING XXX;