嵌套选择的"FOR SHARE"会发生什么情况?



比如说,我有一个嵌套的select:

WITH candidate AS (
select * table_a where flag = 'a'
)
select * from candidate where other_flag = 'b' for share

这个SQL间接地从table_afor shareselect。在这种情况下,会对从table_a返回的行获取行锁吗?

该查询不应该获取任何行锁,因为candidate不是基表。但是你可以看到你自己:run

EXPLAIN WITH (...) SELECT ...

,查看执行计划中是否存在LockRows节点。

如果你想锁定这些行,你必须在子查询中使用FOR SHARE

相关内容

  • 没有找到相关文章

最新更新