我们正在设计一个带有Oracle后端的基于Web的应用程序,用于会议室预订。另外-我们决定使用乐观锁定,因为我们希望碰撞次数位于下侧。
现在-在乐观锁定的情况下,总有可能出现“其他人已经修改过数据”的情况。
我们的UI涉及很多要输入的字段。对于最终用户而言,显示诸如“数据已被修改”之类的消息并不是一种令人愉快的体验。特别是在他/她输入了15+字段之后。
我正在考虑的是,当最终用户根据他/她在UI上输入的前几个条目开始其UI会话时,显示“冲突概率”。
此CP(冲突概率)将通过考虑针对给定表/列进行的数据库会话来动态计算。
例如-如果人A和人B都在查看X会议室的信息-那么这两个人都将显示更高的CP(冲突概率)。
在这种情况下-他们中的任何一个都可以决定等待几秒钟。这比重新输入所有数据更好。
现在我的问题是:在Oracle中,有没有一种方法可以确定哪些会话针对哪些表和ROWID?
答案 0 :(得分:0)
“我们的用户界面涉及许多要输入的字段。”
这似乎是可以通过更好的流程解决的问题。在获得可用的合适房间列表之前,请尽量减少用户需要输入的字段数。当他们选择房间时,请使用悲观锁定,以确保没有其他人在完成预订申请时可以抢走房间。隐藏初始字段的副本,以便他们改变主意后可以重新运行原始查询。
当然,这意味着要维护会话并处理状态,我们都知道Web应用程序很烂。这就是说我们经常在不适合我们正在编写的应用程序时使用网络技术。