小编fdo*_*4un的帖子

Postgres pg_try_advisory_lock会阻止所有记录

pg_try_advisory_lock()在Postgres 使用.

接下来的两个查询会锁定多个记录table1:

1)

SELECT a.id
FROM table1 a
JOIN table2 b ON a.table1_id = b.id
WHERE
    table2.id = 1
    AND
    pg_try_advisory_lock('table1'::regclass::integer, a.id)
LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

SELECT a.id
FROM table1 a
JOIN table2 b ON a.table1_id = b.id
WHERE table2.id = 1
Run Code Online (Sandbox Code Playgroud)

返回一条记录.

2)

SELECT a.id
FROM table1 a
JOIN table2 b ON a.table1_id = b.id
JOIN table3 c ON b.table2_id = c.id
WHERE
    table3.id = 1
    AND
    pg_try_advisory_lock('table1'::regclass::integer, a.id)
LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

但是我pg_try_advisory_lock()只需要锁定一条记录.

怎么了? …

sql postgresql locking

4
推荐指数
1
解决办法
1437
查看次数

标签 统计

locking ×1

postgresql ×1

sql ×1