当前位置: 代码迷 >> Java Web开发 >> oracle 触发器 Java解决思路
  详细解决方案

oracle 触发器 Java解决思路

热度:661   发布时间:2016-04-16 21:33:05.0
oracle 触发器 Java
用Java写的一个程序。两个数据库之间的同步。a数据库有A表,通过insert,delete,update触发器将A表中的相关操作产生的数据写入到a数据库中的B表,然后将B表中的数据通过程序生成SQL文件的形式并删除掉B表的相关记录。然后通过读这个SQL文件,将数据写入到b数据库中的A1表(A1表A表结构相同)。
现在想实现A表和B表的实时同步。想在A1表也建立触发器,监视A1表的变化,同样写入到b数据库的吧B1表,然后通过SQL文件写入到a数据库的A表中。
问题是,两个数据库之间的触发器来回会造成一些数据的来回触发,比如说,A表插入一个数据,触发器会触发写入到B表,传到b数据库插入到A1表后,B1表又会因为A1表的相关触发器产生记录,这个记录又会传到a数据库,并要插入到A表,这就会有重复问题产生。实在是不知道如何解决了。求指点。

语言表达不是太好,不知道有人能看懂不?要是有想法的,请告知,非常感谢。
------解决思路----------------------
oracle 触发器完成自增列 功能
create table t_student(
  id number,
  sno varchar2(20),--学号
  name varchar2(20)
)
--
create sequence myseq--公共序列
minvalue 1
maxvalue 999999
start with 1
increment by 1
cache 30;
create sequence mysno--学号序列
minvalue 1
maxvalue 999999
start with 1
increment by 1
cache 30;
--触发器
create or replace trigger mytr
  before insert on t_student for each row
begin
  select myseq.nextval into :new.id from dual;
  select 'S'
------解决思路----------------------
to_char(mysno.nextval,'000') into :new.sno from dual;
end;
--测试
insert into t_student(name) values('张三')
insert into t_student(name) values('李四')
insert into t_student(name) values('王五')



------解决思路----------------------
你可以去看我的oracle 博客!上面很全,希望帮到你!