É verdade que
INSERT
, UPDATE
ou DELETE
deve adquirir ROW EXCLUSIVE
bloqueio na tabela a ser atualizado. No entanto, este bloqueio não impede
SELECT
de trabalhar normalmente. SELECT
requer apenas ACCESS SHARE
trancar. Este bloqueio é compatível com ROW EXCLUSIVE
- em outras palavras, você pode executar perfeitamente SELECT
enquanto outros dados são atualizados por INSERT
, UPDATE
ou DELETE
, contanto que você não adquira nenhum bloqueio explícito. Em outras palavras, você nunca deve ver nenhum impasse usando a segunda abordagem (apenas não use
SELECT FOR UPDATE
e você vai ficar bem). Leia mais na documentação do PostgreSQL .