如何处理数据并发?

时间:2012-03-30 14:14:38

标签: php mysql database-design pdo

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

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

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

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

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

2 个答案:

答案 0 :(得分:0)

那你为什么不用它的主键(id)检查相应表中是否存在该行?

答案 1 :(得分:0)

基本上,你无法避免这种情况。当用户编辑表单时,用户无法确定表单是否已被删除。

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

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

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

PS:你也需要注意在用户编辑时编辑的信息,因为这些信息会丢失。对于编辑部分,我想我会在编辑后用状态编辑之前检查状态。从这一点开始,由你决定做什么。