laraval再lockforupdate的情况下,如何防止读到脏数据

场景是这样的,用户下单时候,我对用户的资产加了一个lockforupdate,防止用户在其他地方同时下单,资产用到其他地方,当时我发现lockforupdate,只能锁定不更改,其他地方读还是可以的那其他地方显示的数据可能就错误了,这中情况该如何避免?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 7

你是不是没用把lockForUpdate的sql放进事务里面,如果没放事务里面就等于没锁到
例:

DB::transaction(function  ()  {
    DB::table('users')
            ->where('votes', '>', 100)
            ->lockForUpdate()
            ->get();
});
2年前 评论

如果没记错的话 for update 是排他锁,锁住后别人是不能读取的。

所以不存在你说的情况

2年前 评论

用户资产相关的数据可以加一个版本字段,更新时读取的版本是条件

2年前 评论
Tangqy 2年前

事务的隔离级别

2年前 评论

执行sql需放置事务中【事务结束,锁才会释放】,没有放在事务中,那条sql执行完【锁就释放掉了】

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!