用JDBC操作主从表中的oracle事务问题

mdot 2009-05-14 08:13:52
用的是JDBC,数据库oracle 9i,现在有数据库A,数据库B,数据库A有两个表A1,A2,数据库B有表B1,B2,A1和B1,A2和B2的结构都相同,
其中A1和A2是主从表关系,B1和B2是主从表关系,现在的需求是要将A1,A2表中的数据复制到数据库B的B1表和B2表,考虑到事务的问题,我想如下设计,但
感觉好象比较麻烦,看大家有无好的办法.注意,我没用触发器,用代码.

try
{
begin transcation
boolean b1=插入B1();
boolean b2=插入B2();
if b2=false then 回滚B1的事务;
if (b1=true) and (b2=true)
{
boolean b3=更新A1();
if b3=false then 回滚b2,回滚B1
}
}
...全文
86 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mdot 2009-05-15
  • 打赏
  • 举报
回复
UP
mdot 2009-05-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 william3033 的回复:]
两个数据库吗?
还是一个数据库2个用户?
[/Quote]

是两个不同的数据库
fulianglove 2009-05-15
  • 打赏
  • 举报
回复
多个数据库之间的事务管理应该用JTA来解决吧。
=======================================
Oracle有savepoint,试试Connection.setSavepoint(),rollback(Savepoint savepoint) 能不能解决
william3033 2009-05-15
  • 打赏
  • 举报
回复
两个数据库吗?
还是一个数据库2个用户?
mdot 2009-05-15
  • 打赏
  • 举报
回复
up
mdot 2009-05-15
  • 打赏
  • 举报
回复
1 )先把A1表要复制到B1表的数据都读出来,放到List中,然后
boolean b1=insertb1(); (如果b1=true,则代表成功插入b1,否则为false)
2) 由于插入B2表时,需要先到A2表中取某个内容 C,再到B1表中取某个内容D,再把C,D插入到B2表中去。
所以 boolean b2=insertb2();
if b2=false then rollback b1;
3) if b1=true and b2=true
{

boolean a2=更新a2表();
}
if a2=false then roolback b1,b2

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧