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中,实现多...
在数据同步过程中,如果需要保持两个数据库的主键一致,需要在插入Oracle时根据MySQL的最新主键值动态生成Oracle的序列号。 实现这个过程的具体步骤可能包括: 1. 查询MySQL的最新主键值,例如:`SELECT AUTO_...
本示例通过使用子表和触发器来实现表A与表B之间的数据插入同步,以达到实时更新的效果。以下是对这个机制的详细解释: 1. **子表(CHILD表)**: 子表CHILD是用于存储表A和表B之间同步信息的中间表。它有四个字段...
在业务代码中,你需要实现一个定时任务或者监听数据库事件,来定期检查两个数据库之间的数据差异,并进行同步。可以使用Spring的`@Scheduled`注解来创建定时任务,或者使用Oracle的触发器和存储过程来监听变化。 ``...
其中,Oracle快照(Snapshot)与dblink结合使用是一种常见的解决方案,用于实现两个不同数据库之间表数据的同步。本文将详细介绍如何通过创建Oracle的dblink以及利用快照技术来实现这一目标。 #### 创建dblink 为了...
如果这两个表都随源数据库的 `test_user` 表变化而变化,则实现了单向同步。 2. **双向同步** 若要实现双向同步,只需将源数据库与目标数据库的角色互换,重复以上步骤即可。 #### 六、快照的刷新方式 快照的...
这两个数据库系统在业界广泛应用,它们各自具有独特的特性和优势,但有时需要将数据在两者之间进行迁移或实时同步。 MySQL是一款开源、轻量级的关系型数据库管理系统,以其易用性、高效性和稳定性著称。Oracle则是...
表`t1`将作为主要的数据表,而`t2`则用于存储由触发器同步的数据。 ```sql CREATE TABLE t1 ( id VARCHAR2(32) PRIMARY KEY, name VARCHAR2(50), createTime TIMESTAMP(6) ); CREATE TABLE t2 AS SELECT * FROM...
本文针对触发器在实现SQL Server数据库同步的应用进行了研究,旨在提供一个有效的数据同步解决方案。 在介绍触发器实现数据同步之前,文章首先概述了数据库和数据同步的基本概念。数据库发展至今,已从简单的文件...
DBLink是Oracle提供的一种机制,用于在两个不同的Oracle实例之间建立连接,从而实现跨实例查询或数据同步等功能。 - **步骤1**:在目标数据库上创建DBLink ```sql CREATE PUBLIC DATABASE LINK dblink_anson ...
Oracle存储过程和触发器是数据库管理系统中非常重要的两个特性,它们在数据同步和业务逻辑处理中发挥着关键作用。在Oracle数据库系统中,存储过程是一种预编译的PL/SQL代码块,它允许用户定义一系列操作,这些操作...
同步模式会给源数据库增加负载,但和数据表比较的方式相比,同步模式可以减少系统负载。 异步模式使用数据库的重做日志文件,在源数据库发生变更以后,才进行数据捕获。异步模式依赖于源数据库的补充日志的级别。...
首先,触发器是一种特殊类型的存储过程,它与数据表紧密关联,当对表进行数据修改操作时,会自动执行预定义的操作,以确保数据的一致性和完整性。触发器提供了一种更细粒度的数据控制手段,超越了标准数据库功能的...
系统可能会记录每个同步操作的详细日志,以便于排查问题和追踪数据变更历史。Spring的AOP模块可以帮助我们方便地添加日志切面,以跟踪同步过程中的各种操作和可能出现的异常。 6. **性能优化**:为了提高数据同步的...
- **数据共享**:通过触发器,可以在不同系统之间实现数据同步,例如在两个数据库之间设置触发器,当一方数据更新时,另一方的数据也会实时更新,避免数据延迟和冗余输入。 4. **复杂数据完整性** 触发器能实现更...