【发布时间】:2011-08-27 06:53:26
【问题描述】:
据我了解,CouchDb 永远不会覆盖记录,而是使用新的 _rev 创建一个新文档。在这种情况下会发生什么?
- 用户 A 读取文档
- 用户 B 读取相同的文档
- 用户 A 更新文档
- 用户 B 更新文档
在这种情况下用户 A 的更改不会丢失吗?
【问题讨论】:
据我了解,CouchDb 永远不会覆盖记录,而是使用新的 _rev 创建一个新文档。在这种情况下会发生什么?
在这种情况下用户 A 的更改不会丢失吗?
【问题讨论】:
不,相反,用户 B 将收到 409 错误,因为转速将不再匹配。要让用户 B 提交他们的文档,他们需要重新获取文档,以便获得最新的文档修订版本。
这称为乐观锁定,旨在专门防止您遇到的问题。
没有什么可以阻止用户 B 踩用户 A 的文档,但现在他们必须重新获取文档并使用新的 _rev 参数,从而更加意识到这一点。
【讨论】: