`
zjx2388
  • 浏览: 1328888 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

oracle 触发器两个表的数据同步(同一个库和不同库的)

 
阅读更多

Oracle 触发器 插入,更新,删除,数据同步,在同一个数据库的两表同步 :

 建表语句:
create table User_Info (
   ID                   INTEGER                        not null,
   UserName            VARCHAR(30)                     not null,
   PassWord            VARCHAR(20)                     not null,
   CreateDate          Date                            not null,
   Status              INTEGER                         not null,
   constraint PK_User_Info primary key (ID)
);

create table User_Info_Temp (
   ID                   INTEGER                        not null,
   UserName            VARCHAR(30)                     not null,
   PassWord            VARCHAR(20)                     not null,
   CreateDate          Date                            not null,
   Status              INTEGER                         not null,
   constraint PK_User_Info_Temp primary key (ID)
);

触发器写法:

create or replace trigger UserToTemp after insert or update or delete
on user_info for each row
declare
    integrity_error exception;
    errno            integer;
    errmsg           char(200);
    dummy            integer;
    found            boolean;
   
begin
if inserting then
    insert into User_info_temp(ID,UserName,PassWord,CreateDate,Status) values(:NEW.ID,:NEW.UserName,:NEW.PassWord,:new.CreateDate,:NEW.Status);
elsif updating then
    update User_info_temp set ID=:NEW.ID,UserName=:NEW.UserName,PassWord=:NEW.PassWord,Status=:NEW.Status where id=:OLD.id;
elsif deleting then
    delete from User_info_temp where id=:OLD.id;
end if;
exception
    when integrity_error then
       raise_application_error(errno, errmsg);
end;

 


测试数据:
insert into user_info(ID,UserName,PassWord,CreateDate,Status)values(1,'hello','111',to_date('2015-08-11','yyyy-mm-dd'),1);

 

update user_info u set u.status=3,u.username='world' where u.id=1;

 

delete from user_info u where u.id=1;

 

 

 

+++++++++++++++++不同数据库建的两个表同步++++++++++++++++++++++++++++++++

 

 

 

在parking库建User_Info表
在sfgl库建User_Info_Temp表

 

----------------------------------------------------------
两个数据库的连接dblink:  在parking库新建的
dblink_usertest  可以任意改,是个dblink连接名称
sfgl/sfgl  数据库的用户名和密码
orcl 数据库连接标识符

 

 

 

create public database link dblink_usertest
  connect to sfgl identified by sfgl
  using 'orcl';
 

 

----------------------------------------------------------
触发器: 新建在parking库上的

 

create or replace trigger UserToTemp after insert or update or delete
on User_Info for each row
declare
    integrity_error exception;
    errno            integer;
    errmsg           char(200);
    dummy            integer;
    found            boolean;
   
begin
if inserting then
    insert into User_Info_Temp@dblink_usertest(ID,UserName,PassWord,CreateDate,Status) values(:NEW.ID,:NEW.UserName,:NEW.PassWord,:new.CreateDate,:NEW.Status);
elsif updating then
    update User_Info_Temp@dblink_usertest set ID=:NEW.ID,UserName=:NEW.UserName,PassWord=:NEW.PassWord,Status=:NEW.Status where id=:OLD.id;
elsif deleting then
    delete from User_Info_Temp@dblink_usertest where id=:OLD.id;
end if;
exception
    when integrity_error then
       raise_application_error(errno, errmsg);
end;
 
----------------------------------------------------------
select * from User_Info@dblink_usertest2;
select * from User_Info_Temp@dblink_usertest;
 

 

 

 

分享到:
评论

相关推荐

    java多个数据库实现数据同步

    数据同步是指在两个或多个数据库之间,当某个数据库中的数据发生改变时,这些变化能够被实时或者近实时地反映到其他数据库中。这有助于防止数据丢失和减少数据冲突,保证各个节点的数据一致性。 在Java中,实现多...

    mysql-oracle数据同步

    在数据同步过程中,如果需要保持两个数据库的主键一致,需要在插入Oracle时根据MySQL的最新主键值动态生成Oracle的序列号。 实现这个过程的具体步骤可能包括: 1. 查询MySQL的最新主键值,例如:`SELECT AUTO_...

    子表+触发器实现数据同步

    本示例通过使用子表和触发器来实现表A与表B之间的数据插入同步,以达到实时更新的效果。以下是对这个机制的详细解释: 1. **子表(CHILD表)**: 子表CHILD是用于存储表A和表B之间同步信息的中间表。它有四个字段...

    JAVA Spring boot JDBC同步不同服务器oracle数据库

    在业务代码中,你需要实现一个定时任务或者监听数据库事件,来定期检查两个数据库之间的数据差异,并进行同步。可以使用Spring的`@Scheduled`注解来创建定时任务,或者使用Oracle的触发器和存储过程来监听变化。 ``...

    利用oracle快照dblink解决数据库表同步问

    其中,Oracle快照(Snapshot)与dblink结合使用是一种常见的解决方案,用于实现两个不同数据库之间表数据的同步。本文将详细介绍如何通过创建Oracle的dblink以及利用快照技术来实现这一目标。 #### 创建dblink 为了...

    oracle实现数据同步

    如果这两个表都随源数据库的 `test_user` 表变化而变化,则实现了单向同步。 2. **双向同步** 若要实现双向同步,只需将源数据库与目标数据库的角色互换,重复以上步骤即可。 #### 六、快照的刷新方式 快照的...

    mysql和Oracle的数据同步demo案例

    这两个数据库系统在业界广泛应用,它们各自具有独特的特性和优势,但有时需要将数据在两者之间进行迁移或实时同步。 MySQL是一款开源、轻量级的关系型数据库管理系统,以其易用性、高效性和稳定性著称。Oracle则是...

    oracle触发器

    表`t1`将作为主要的数据表,而`t2`则用于存储由触发器同步的数据。 ```sql CREATE TABLE t1 ( id VARCHAR2(32) PRIMARY KEY, name VARCHAR2(50), createTime TIMESTAMP(6) ); CREATE TABLE t2 AS SELECT * FROM...

    oracle 跨实例 数据同步

    DBLink是Oracle提供的一种机制,用于在两个不同的Oracle实例之间建立连接,从而实现跨实例查询或数据同步等功能。 - **步骤1**:在目标数据库上创建DBLink ```sql CREATE PUBLIC DATABASE LINK dblink_anson ...

    触发器实现数据同步-毕业设计

    这个应用利用触发器来监控和触发SQL Server数据库的同步操作,确保数据在多个节点间的一致性。 总结来说,该毕业设计深入研究了数据库同步技术,特别是通过触发器来实现SQL Server数据库的同步。这为分布式数据库...

    浅析Oracle存储过程触发器在数据同步中的应用.pdf

    Oracle存储过程和触发器是数据库管理系统中非常重要的两个特性,它们在数据同步和业务逻辑处理中发挥着关键作用。在Oracle数据库系统中,存储过程是一种预编译的PL/SQL代码块,它允许用户定义一系列操作,这些操作...

    使用 PDI 和 Oracle CDC 来实现Oracle 数据库向其他数据库的数据同步

    同步模式会给源数据库增加负载,但和数据表比较的方式相比,同步模式可以减少系统负载。 异步模式使用数据库的重做日志文件,在源数据库发生变更以后,才进行数据捕获。异步模式依赖于源数据库的补充日志的级别。...

    Oracle触发器操作.pptx

    首先,触发器是一种特殊类型的存储过程,它与数据表紧密关联,当对表进行数据修改操作时,会自动执行预定义的操作,以确保数据的一致性和完整性。触发器提供了一种更细粒度的数据控制手段,超越了标准数据库功能的...

    oracle数据同步

    系统可能会记录每个同步操作的详细日志,以便于排查问题和追踪数据变更历史。Spring的AOP模块可以帮助我们方便地添加日志切面,以跟踪同步过程中的各种操作和可能出现的异常。 6. **性能优化**:为了提高数据同步的...

    浅谈MIS开发中对Oracle触发器的应用.pdf

    - **数据共享**:通过触发器,可以在不同系统之间实现数据同步,例如在两个数据库之间设置触发器,当一方数据更新时,另一方的数据也会实时更新,避免数据延迟和冗余输入。 4. **复杂数据完整性** 触发器能实现更...

Global site tag (gtag.js) - Google Analytics