如何处理数据并发


How to handle the data concurrency?

例如,在我的系统中,我允许用户创建一个列表并向列表中添加一些信息,例如姓名、地址、电话。。。

创建列表后,它将被插入数据库,管理员可以在页面中删除列表

问题是当用户编辑列表时,管理员删除了列表,然后会发生什么?

唯一的方法是在编辑提交到数据库之前再次检查数据库。然而,如果有很多表单,很多输入,我如何检查每个字段,如果我必须检查每个并发的字段,就会有很多工作

我使用php、mysql和pdo进行查询
感谢

为什么不简单地使用主键(id)检查相应表中是否存在该行?

Basicly,您无法避免这种情况。当用户编辑表单时,用户无法发现表单是否已被删除。

一种解决方案是,一旦用户开始编辑记录,就要设置一个标志,以防止任何人同时编辑/删除记录。一旦用户提交了表单,那么标志应该返回到原始值,这样其他用户/管理员就可以编辑/删除这些记录。

还有第二种解决方案,即使用服务,并通过ajax不时检查用户页面中的记录是否仍然存在,但如果您有很多输入,那么实现起来可能会有点麻烦。

基本上,您需要创建类似于事务的东西,也就是。锁定正在编辑的记录。小心点,因为你最终可能会有很多被锁定的记录。您需要实现用户需要完成"事务"的时间。如果超过该时间有锁定的记录,请自动解锁。还要注意,用户可能会超过这个时间,您也需要处理这种情况,因为您最终会处于与原始问题相同的状态。

PS:你还需要注意那些在用户编辑时被编辑的信息,因为这些信息会丢失。对于编辑部分,我想我会采用哈希方法来检查编辑前的状态和编辑后的状态。从这一点开始,由您决定该做什么。