我使用 Spring Data Jpa 来处理 Postgres 数据库。访问数据库时,会生成以下查询:
select
user0_.user_id as user_id1_0_,
user0_.birthday as birthday2_0_,
user0_.username as username3_0_
from
users user0_
where
user0_.username=$1
limit $2
for update of user0_ skip locked
网上的例子通常会在
for update of
后面指定列,但查询时这里指定的是表。在这种情况下什么会被阻止?整排?
虽然
FROM
子句仅包含单个表(示例中的 users AS user0_
),但 FOR UPDATE OF user0_
和简单的 FOR UPDATE
之间实际上没有区别。但这对于 FROM
子句中的多个表来说是有区别的。如果在锁定子句中指定了特定表,则只有行 来自那些被锁定的表;中使用的任何其他表
照常简单地阅读。没有表的锁定子句 list 影响语句中使用的所有表。如果锁定子句是 应用于视图或子查询,它会影响视图中使用的所有表 或子查询。但是,这些条款不适用于SELECT
查询 由主查询引用。如果您希望发生行锁定 在WITH
查询中,在WITH
中指定锁定子句 查询。WITH
不,你不能在 Postgres 中列出列。只有桌子。 Postgres 使用此子句锁定选定的行。不是专栏。