Further observation: Now I managed to get rid of the blocking. I am not sure if you are familiar with the NHibernate ORM, but it has a concept of a stateful and stateless sessions. Session holds a connection to the database and transaction is created on a particular session. In this case, 'begin transaction' and the SELECT statement was executed in the context of the stateful session, while the UPDATE was executed on a stateless session. I am not sure how this situation manifests on Postgres but since the 'blocked' and 'blocking' lock apparently belong to the same transaction, it does not look like it should matter, except it does. -- View this message in context: http://postgresql.nabble.com/SELECT-blocks-UPDATE-tp5862040p5862097.html Sent from the PostgreSQL - general mailing list archive at Nabble.com. -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general