Es cierto que INSERT
, UPDATE
o DELETE
debe adquirir ROW EXCLUSIVE
bloqueo en la tabla para ser actualizado.
Sin embargo, este bloqueo no evita que SELECT
de trabajar con normalidad. SELECT
solo requiere ACCESS SHARE
cerrar. Este candado es compatible con ROW EXCLUSIVE
- en otras palabras, puede ejecutar perfectamente SELECT
mientras que otros datos son actualizados por INSERT
, UPDATE
o DELETE
, siempre que no adquiera ningún bloqueo explícito.
En otras palabras, nunca debería ver interbloqueos usando el segundo enfoque (simplemente no use SELECT FOR UPDATE
y estarás bien).
Lea más en Documentación de PostgreSQL .