A table lock, also called a TM lock, is acquired by a transaction when a table is modified by an:
- or LOCK TABLE statement.
DML operations require table locks to reserve DML access to the table on behalf of a transaction and to prevent DDL operations that would conflict with the transaction.
A table lock can be held in any of the following modes.
Below the abbreviations means:
- R = Row
- S = Shared
- SS= Sub-shared
- X = Exclusive
The RS (Row Share), also called a subshare table lock (SS) lock indicates that the transaction holding the lock on the table has locked rows in the table and intends to update them. A row share lock is the least restrictive mode of table lock, offering the highest degree of concurrency for a table.
The subshare table lock (SS) is an other name for a Row Share Lock (RS) (see above).
The Row Exclusive Table Lock (RX), also called a subexclusive table lock (SX), generally indicates that the transaction holding the lock has updated table rows or issued SELECT … FOR UPDATE. An SX lock allows other transactions to query, insert, update, delete, or lock rows concurrently in the same table. Therefore, SX locks allow multiple transactions to obtain simultaneous SX and subshare table locks for the same table.
The subexclusive table lock (SX) is an other name for the Row Exclusive Table Lock (RX)
A share table lock (S) held by a transaction allows other transactions to query the table (without using SELECT … FOR UPDATE), but updates are allowed only if a single transaction holds the share table lock. Because multiple transactions may hold a share table lock concurrently, holding this lock is not sufficient to ensure that a transaction can modify the table.
The Share Row Exclusive Table Lock (SRX), also called a share-subexclusive table lock (SSX), is more restrictive than a share table lock. Only one transaction at a time can acquire an SSX lock on a given table. An SSX lock held by a transaction allows other transactions to query the table (except for SELECT … FOR UPDATE) but not to update the table.
The share-subexclusive table lock (SSX) is an other name for the Share Row Exclusive Table Lock (SRX)
The Exclusive Table Lock (X) is the most restrictive, prohibiting other transactions from performing any type of DML statement or placing any type of lock on the table.
A full table lock is acquired in this modes: