现在项目里有个逻辑关于数据流程状态的,两个用户在各自客户端同一个审核页面操作更新同一条数据,用户A做审核通过,用户B再审核驳回。
现有的方案是两边接口都传待审核的状态过去给接口校验,用户B点的审核页可能会获取最新数据状态,但也要存下其他用户操作前的待审核状态,我觉着这太麻烦了不符合逻辑,直接接口里拿最新的数据状态和要操作的类型比对不就行了,大家怎么看这种逻辑是否合适?
现在项目里有个逻辑关于数据流程状态的,两个用户在各自客户端同一个审核页面操作更新同一条数据,用户A做审核通过,用户B再审核驳回。
现有的方案是两边接口都传待审核的状态过去给接口校验,用户B点的审核页可能会获取最新数据状态,但也要存下其他用户操作前的待审核状态,我觉着这太麻烦了不符合逻辑,直接接口里拿最新的数据状态和要操作的类型比对不就行了,大家怎么看这种逻辑是否合适?
很常见的多人编辑冲突问题。
常见的解决方案就那么几种,具体还是要结合业务场景来选择。
row_version
),客户端获取时拿到它,提交修改时一并传回去。服务端 UPDATE 时增加 WHERE 条件 row_version=request.row_version
,并且同时更新 row_version
(比如 +1)。这样后提交的请求因为 row_version
与数据库值不同就不会更新。12 回答5.9k 阅读
2 回答3.2k 阅读✓ 已解决
3 回答6.9k 阅读✓ 已解决
3 回答3k 阅读✓ 已解决
5 回答4.6k 阅读
4 回答2.3k 阅读
3 回答4.5k 阅读
是拿最新的数据状态,和当前要操作的类型进行比对