我有一个像分层类别的树,我需要保存在数据库中。我使用MPTT(嵌套集)来保存这些数据。
问题是这个类别需要多个用户编辑,有时可以同时编辑。
如何在不对用户施加太多限制的情况下保持结构的完整性?
鉴于MPTT的性质,在更改结构中的元素时,它也会影响其他元素(更改左/右值)。
对于前。用户A删除Node1,用户B在Node1下添加Leaf1。这应该给用户B一个错误,即Node1不再存在,但我相信它只会给用户B造成混淆......
这个问题有什么实际的解决方案吗?
答案 0 :(得分:3)
您正在寻找的是乐观并发。这意味着,您允许用户开始编辑记录,但在应用更改之前,您可以检查记录在用户开始编辑时是否处于相同状态。
其他方案是锁定可能受编辑影响的所有记录,但会限制用户进行任何更改。
答案 1 :(得分:0)
这与其他任何多用户交易系统有何不同?
将您的用户操作包含在事务中,以便锁定所有参与的表。然后根据当前数据验证输入并执行更新。