客户端-服务器方法中的持久事务


Persistent transaction in a client-server approach

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

谢谢。

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

添加一列,如"inedition",当用户要求编辑时,您将其设置为true,而当用户验证/取消编辑时,则设置为false。

请注意,在解锁行之前,一些用户交易可能会丢失,因此您可能需要:

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

编辑:每当您不想依赖特定于数据库的功能时,就会使用这种解决方案,例如Oracle的"Select for update"。在Java中,EJB全状态bean可以保留对从UI到数据库的事务的引用。根据数据库的不同,可能存在使用PHP for Oracle或其他特定于数据库的事务功能的解决方案。