Oracle 事物相关,求支招

zhanglong19891129 2014-09-15 03:44:43
大概逻辑是这样的 。
本地函数A (读写一卡通卡片的 函数)
服务器函数B (调用操作Oracle的方法)。
函数A 执行的 时间 可能需要 个 1秒中 。这样的话 ,把A 和 B 放到 一个 事物中 明显是不合理的 这样 的 话在 循环执行过程中 会把表 锁死。
现在能想到 的 逻辑 就是 先 执行 B 执行A ,加入 A执行失败 ,在 执行C(C的作用是,将B中修改的数据还原)。
但是 总感觉 这种逻辑 有点问题。
求大家帮助
...全文
235 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sych888 2014-09-16
  • 打赏
  • 举报
回复
匿名。。。。。
bw555 2014-09-15
  • 打赏
  • 举报
回复
B函数本身就不可能执行成功,标记为放弃,只要状态不再是A就可以
zhanglong19891129 2014-09-15
  • 打赏
  • 举报
回复
引用 1 楼 bw555 的回复:
建立日志表 1、执行前写日志,标记为未执行状态 2、执行本地函数A ,此时未锁定任何记录,执行结束将日志状态标记为A 3、执行B过程,执行结束,标记状态为完成 如果系统异常中断,重启服务后,可以从日志中查找状态为A的日志记录,继续执行B过程
大侠 这个 方法很赞,但是。B函数本身就不可能执行成功的话, 还是 没有解决问题啊。
RUMBLE_ZHENG 2014-09-15
  • 打赏
  • 举报
回复
把A和B分开,作为两个事物来执行,做成像“消息队列和应用状态来消除分布式事务”的方法来处理。
bw555 2014-09-15
  • 打赏
  • 举报
回复
建立日志表 1、执行前写日志,标记为未执行状态 2、执行本地函数A ,此时未锁定任何记录,执行结束将日志状态标记为A 3、执行B过程,执行结束,标记状态为完成 如果系统异常中断,重启服务后,可以从日志中查找状态为A的日志记录,继续执行B过程

17,086

社区成员

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

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