`
zjx2388
  • 浏览: 1308117 次
  • 性别: 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;
 

 

 

 

分享到:
评论

相关推荐

    ORACLE数据库复制

    高级复制主要是基于触发器的原理来触发数据同步的,因此,高级复制无法实现用户,数据库级别的对象复制,只能做些表、索引和存储过程的复制。 如果出于容灾整个数据库的考虑,高级复制相当复杂,而且并不一定能...

    Oracle基于日志的数据备份

    CDC有两个模式:同步和异步。两种模式的实现机制是截然不同的。同步CDC主要是采用触发器记录新增数据,基本能够做到实时增量抽取。而异步CDC则是通过分析已经commit的日志记录来得到增量数据信息,有一定的时间延迟...

    sql数据库比较工具 3.5 官方版

    2、快速的比较两个库之间表、视图、存储过程、函数和触发器的不同,并可以生成SQL脚本,执行SQL脚本就可以完成两个库的同步操作 3、增加大字段(TEXT)的查看和修改功能 4、统计库中所有表的记录数,分析各表的数据 ...

    ORACLE9i_优化设计与系统调整

    第一部分 ORACLE系统优化基本知识 23 第1章 ORACLE结构回顾 23 §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第2/2部分)

    CruiseYoung提供的带有详细书签的电子书籍目录 ... OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-... 12.1 使用同等联接和非同等联接编写SELECT语句访问多个表的数据 398 12.1.1 联接的类型 398 12.1.2 ...

    glusterfs.md

    多环境分部署存储,我根据实际项目用到,项目有两套环境分别用到文件服务器minio,实际应用一个环境上传文件,另一个环境也可以使用,这就涉及到了文件同步,glusterfs分布式存储就可以做到,将两个环境分别文件...

    Navicat Premium 11.0.17简体中文注册版.rar

    可以在源数据库和目标数据库之间传输数据,也可在源数据库和目标数据库之间进行数据同步,同步数据结构,比较两个数据库之间的的表、主键、外键、索引、触发器及字符集、比对自动递增值及分割区,比对视图、函数、...

    asp.net知识库

    通过作业,定时同步两个数据库 SQLSERVER高级注入技巧 利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的内容是否合法 asp.net报表解决方法 SQLDMO类的使用 SQL过程自动C#封装,支持从表到...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第1/2部分)

    CruiseYoung提供的带有详细书签的电子书籍目录 ... 对应的书籍资料见: OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051... 12.1 使用同等联接和非同等联接编写SELECT语句访问多个表的数据 398 12.1.1 联接的类型...

    Toad 使用快速入门

    和其他的 PL/SQL 编辑工具不同,TOAD 允许在一个文件中操作多个数据库对象,可以编译一个对象、编译多个对象、编译到当前光标、从光标开始编译。在运行出现错误时,存储过程停止到有问题的语句。用户可以使用快捷...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例046 比较两个时间戳的大小 77 实例047 使用条件运算符判断数字的奇偶性 78 实例048 判断用户是否具有后台管理权限 79 实例049 打印随机组合生日祝福语 80 实例050 打印2000~2020年的所有闰年 81 实例051 前置...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例046 比较两个时间戳的大小 77 实例047 使用条件运算符判断数字的奇偶性 78 实例048 判断用户是否具有后台管理权限 79 实例049 打印随机组合生日祝福语 80 实例050 打印2000~2020年的所有闰年 81 实例051 前置...

    java面试宝典

    18、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 9 19、是否可以继承String 类? 9 20、以下二条语句返回值为true 的有: 10 21、当一个对象被当作参数传递到一个方法后,此方法可...

    千方百计笔试题大全

    18、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 9 19、是否可以继承String 类? 9 20、以下二条语句返回值为true 的有: 10 21、当一个对象被当作参数传递到一个方法后,此方法可...

Global site tag (gtag.js) - Google Analytics