Lock
Locks a table within a transaction.
Synopsis
LOCK [ TABLE ] name LOCK [ TABLE ] name IN lock_mode lock_mode ::= { [ ROW | ACCESS ] { SHARE | EXCLUSIVE } | SHARE ROW EXCLUSIVE } MODE
Parameters
name
The name of the table you intend to lock.
lock_mode
There are seven valid lock modes that may be combined from the available keywords. Here they are, in order from least restrictive to most restrictive, along with the commands and modes they block:
ACCESS SHARE MODE
The
ACCESS SHARE MODE
lock is acquired automatically by aSELECT
statement on the table or tables it retrieves from. This mode blocksALTER TABLE
,DROP TABLE
, andVACUUM
commands on the table on which it is placed.This mode also blocks concurrent
ACCESS EXCLUSIVE MODE
locks from being acquired on the same table.ROW SHARE MODE
The
ROW SHARE MODE
lock is acquired automatically by aSELECT
statement that has aFOR UPDATE
clause. It blocksALTER TABLE
,DROP TABLE
, andVACUUM
commands on the table on which it is acquired.This mode also blocks concurrent
EXCLUSIVE MODE
andACCESS EXCLUSIVE MODE
locks from being acquired on the same table.ROW EXCLUSIVE MODE
The
ROW EXCLUSIVE MODE
lock is acquired automatically by anUPDATE
,INSERT
, orDELETE
command. This mode blocksALTER TABLE
,DROP TABLE
,VACUUM
, andCREATE INDEX
commands.This mode also blocks concurrent
SHARE MODE
,SHARE ROW EXCLUSIVE MODE
,EXCLUSIVE MODE
, andACCESS EXCLUSIVE MODE
locks from being acquired on the same table.SHARE MODE
The
SHARE MODE
lock is acquired automatically by ...
Get Practical PostgreSQL now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.