隐式获取的锁也会一直持续到事务结束?

时间:2014-11-05 11:17:14

标签: postgresql

BEGIN
    INSERT INTO q VALUES(1);
    SELECT * FROM q;
END;

根据http://www.postgresql.org/docs/9.1/static/explicit-locking.html,我假设INSERT查询获取了ROW EXCLUSIVE类型的锁。这是否意味着在运行SELECT查询时此锁也处于活动状态?我假设这个基于:"一旦获得,通常会持有锁直到交易结束。" (引自上述文件)

一般来说,上述语义与:

相同
BEGIN
    LOCK q IN ROW EXCLUSIVE MODE;
    INSERT INTO q VALUES(1);
    SELECT * FROM q;
END;

1 个答案:

答案 0 :(得分:0)

使用Frank_Heikens的想法我测试了上述假设,并且可以确认INSERT查询的隐式获取锁定在事务结束前保持活动状态。