首页 > 解决方案 > 如何在 Oracle Apex 中实现悲观锁定

问题描述

我在 ID 列上有链接,当用户点击链接时,会有一个 EDIT 按钮。单击 EDIT 时,用户可以进行更改。

但是,我想确保两个用户不能同时编辑,并且当一个用户单击编辑时,所有用户都看不到编辑按钮,直到保存/提交记录。也可以留言,例如。记录正在被其他用户编辑,请稍后再试。

我可以在表格中添加一列,例如。编辑数字(1),但是如何将此列更改为 1。当用户单击编辑按钮时?

标签: oracle-apex

解决方案


回答您的问题:
您可以创建一个将在 pageLoad 上触发的动态操作。然后,该 DA 应将该列更新为 1 或 Y。

!!警告
但是您将如何确保该列将更新回 0 或 N?关闭模式的按钮和操作可以将列更新回其初始状态,但 X - 关闭窗口按钮不会。如果您的浏览器关闭或崩溃怎么办?

在这种情况下,您将留下一条记录,任何人都无法再编辑该记录,因为该记录仍指示为当前正在编辑。

我强烈建议不要走那条路!
相反,请相信 Oracle APEXPrevent Lost UpdatesLock Row机制。这些在过程的Settings一部分中可用Automatic Row Processing


推荐阅读