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

SQL查询如何跳过持有锁的行使其不被选中

跳过查询中被加锁行的实现方法

针对你使用的SQL Server语法场景,要实现跳过已被其他事务加锁的行,直接在第二个会话的查询语句中添加READPAST表提示即可。

示例查询代码:

SELECT *
FROM [table] WITH (READPAST)
WHERE id = 2;

READPAST的作用就是让数据库引擎读取数据时,直接跳过所有已经被其他事务持有锁的行,既不会等待锁释放,也不会触发锁超时错误,你要的id=2的加锁行就不会出现在本次查询结果中。

注意事项

  • 不同数据库有对应的同类实现:MySQL InnoDB引擎、PostgreSQL可以使用SKIP LOCKED关键字实现相同效果。
  • READPAST仅对行级锁生效,如果被加的是表级锁,该提示不会生效。
  • 该特性常被用于队列类业务场景,避免多个消费者争抢同一条数据时出现锁等待或死锁问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:06:02