oracle dblink-数据同步(使用trigger)
物理上存放于网络的多个Oracle数据库,逻辑上可以看成一个单个的大数据库。 用户可以通过网络对异地数据库中的数据同时进行存取,而服务器之间的协同处理对于工作站用户及应用程序而言是完全透明的:开发人员无需关心网络的链接细节、无需关心数据在网络接点中的具体分布情况、也无需关心服务器之间的协调工作过程。
实现可分为四步。 1、在本地tnsnames.ora(该配置文件一般在"oracle主目录ora90networkADMIN"中)里面配置一个服务命名,用于连接远程数据库。 2、建立db_link(create public database link) 3、创建同义词(create sysnonym) 例:create or replace synonym SYN_GRADING for GRADING@db21 4、使用(结合上同义词举例)。 1)查询select * from SYN_GRADING,与select * fromGRADING@db21一样。查询的10.10.10.21主机上oradb10g数据库中的GRADING表 2)增、删、改需要建立触发器。 create or replace trigger TRI_GRADING after INSERT OR DELETE OR UPDATE ON GRADING //本地数据库表 FOR EACH ROW BEGIN IF inserting THEN insert into SYN_GRADING (ID,DEVICEID,GRADE,INTHEYEAR,GRADINGMAN,CARID,STATE,DEPTNAME,DEPTNO) values (:NEW.ID,:NEW.DEVICEID,:NEW.GRADE,:NEW.INTHEYEAR,:NEW.GRADINGMAN,:NEW.CARID,:NEW.STATE,:NEW.DEPTNAME,:NEW.DEPTNO); ELSIF updating THEN update SYN_GRADING set DEVICEID = :NEW.DEVICEID,GRADE = :NEW.GRADE,INTHEYEAR = :NEW.INTHEYEAR,GRADINGMAN = :NEW.GRADINGMAN,CARID = :NEW.CARID,STATE = :NEW.STATE,DEPTNAME = :NEW.DEPTNAME,DEPTNO = :NEW.DEPTNO where id = :old.id; ELSIF deleting THEN delete from SYN_GRADING where id = :old.id; END IF; END TRI_GRADING; 这样,在往本地数据表GRADING中增、删、改数据时,10.10.10.21主机上oradb10g数据库中的GRADING表也将得到同步。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- objective-c – 退出应用程序的方法之间的区别:exit(),NSA
- flex – 为什么mx:states无法解析为组件实现?
- 如何在React Native中获取base64的图像
- Flex和Java整合错误 [FaultEvent fault=[RPC Fault faultSt
- ios – 如何将我的应用程序作为模块包含在Swift Playground
- c#解压文件的实例方法
- PostGreSQL源码结构
- swift语言 继承和扩展
- ruby-on-rails – active_admin目录中的常量警告重新声明
- c# – 如何在Class Library Project类型中使用Configuratio