You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

lockForUpdate是否支持whereIn?能否批量锁定多行?

lockForUpdate搭配whereIn的行锁定说明
  • 你的代码会锁定whereIn子句匹配的所有行,而非整个表,但具体行为确实和SQL服务器的实现有关(主流数据库如MySQL、PostgreSQL表现一致)。
  • Laravel的lockForUpdate()会生成带FOR UPDATE锁的SQL,搭配whereIn时最终SQL类似:SELECT * FROM table_1 WHERE column IN (?, ?, ...) FOR UPDATE。
  • 主流关系型数据库(MySQL InnoDB、PostgreSQL)对这类语句的处理都是仅锁定匹配行,不会锁全表。但要注意:如果查询未命中索引,数据库可能退化为表级锁(比如MySQL InnoDB做表扫描时的间隙锁或表锁),所以要确保column字段有合适的索引。
  • 你可以开启Laravel的SQL日志,查看实际生成的SQL语句,确认锁的作用范围。

内容的提问来源于stack exchange,提问作者pileup

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 15:44:53