0

在我的应用程序(客户端-服务器)中,我需要编辑一些行(来自数据库),只要它们被编辑,就不需要任何人也可以编辑。这当然是通过交易完成的。问题是在客户端环境中,事务是在服务器端管理的,所以编辑行的客户端不能直接访问事务。(我在这种情况下使用 PHP,但认为其他技术也采用相同的方法)。所以我需要保持事务打开(以保持行锁定以进行编辑),直到客户端完成编辑。在 PHP 中,持久连接无济于事,因为它们可能会从与上述客户端位于同一主机的其他客户端断开。你对我的场景有什么想法吗?

谢谢你。

4

1 回答 1

1

通常,此类情况是通过您直接在对象或对象的父对象上设置的业务锁来处理的。

添加一个“inedition”列,当用户要求编辑时设置为 true,当用户验证/取消其编辑时设置为 false。

请注意,在您解锁该行之前,某些用户事务可能会丢失,因此您可能需要:

  • 解锁行的定期处理
  • 用户或管理员可以从中解锁保持锁定的行的功能屏幕。

编辑:只要您不想依赖数据库特定功能,例如 Oracle“选择更新”,就会使用这种解决方案。在 Java 中,EJB 有状态 bean 可以保留对从 UI 到数据库的事务的引用。可能有解决方案使用 PHP for Oracle 或其他有关事务的数据库特定功能,具体取决于数据库。

于 2011-05-26T12:37:58.833 回答