在我的应用程序(客户端 - 服务器)中,我需要编辑一些行(来自数据库),只要它们被编辑,它就不需要任何人也可以编辑。这当然是由交易完成的。问题是在客户端环境中,事务在服务器端进行管理,因此编辑行的客户端无法直接访问事务。 (我在这种情况下使用PHP,但认为在其他技术中也采用了相同的方法)。所以我需要保持事务处理(保持行被锁定以进行编辑),直到客户端完成编辑。 在PHP中,持久连接无济于事,因为它们可以与位于同一主机中的上述客户端的其他客户端断开连接。你对我的场景有任何想法吗?
谢谢。答案 0 :(得分:1)
通常这种情况是通过您直接在对象上设置的业务锁或对象的父级来处理的。
在用户声明编辑时添加您设置为true的“inedition”列,并在用户验证/取消其编辑时设置为false。
请注意,在解锁行之前,某些用户的交易可能会丢失,因此您可能需要:
编辑: 只要您不想依赖数据库特定功能(例如Oracle“选择更新”),就会使用此类解决方案。在Java中,EJB状态bean可以保持对从UI到数据库的事务的引用。可能存在使用PHP for Oracle的解决方案或关于事务的其他数据库特定功能,具体取决于数据库。