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

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

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 7

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

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

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

所以不存在你说的情况

3年前 评论

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

3年前 评论
Tangqy 3年前

事务的隔离级别

3年前 评论

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

3年前 评论

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