InletDownload

PostgreSQL lock modes

Every statement takes a lock on the tables it touches, and some locks wait for others. Here is what each mode blocks, which statements take it, and how to see who holds it right now.

Which locks conflict

A cross means a session asking for the lock in the row waits while another session holds the lock in the column.

Requested ↓ · Held →ACCESS SHAREROW SHAREROW EXCLUSIVESHARE UPDATE EXCLUSIVESHARESHARE ROW EXCLUSIVEEXCLUSIVEACCESS EXCLUSIVE
ACCESS SHARE·······✕
ROW SHARE······✕✕
ROW EXCLUSIVE····✕✕✕✕
SHARE UPDATE EXCLUSIVE···✕✕✕✕✕
SHARE··✕✕·✕✕✕
SHARE ROW EXCLUSIVE··✕✕✕✕✕✕
EXCLUSIVE·✕✕✕✕✕✕✕
ACCESS EXCLUSIVE✕✕✕✕✕✕✕✕

The lock modes