LOCK TABLE statement
Use the LOCK TABLE statement to control access to a table by other processes.
Syntax
Element | Description | Restrictions | Syntax |
---|---|---|---|
owner | Owner of synonym or table | Must be the owner of the specified object | Owner name |
synonym | Synonym for the table to be locked | Synonym and the table to which it points must exist | Identifier |
table | Table to be locked | See first paragraph of Usage. | Identifier |
Usage
This statement is an extension to the ANSI/ISO standard for SQL.
- You are the owner of the table.
- You have Select privilege on the table or on a column in the table, either from a direct grant or from a grant to PUBLIC or to your current role.
The LOCK TABLE statement fails if the table is already locked in EXCLUSIVE mode by another process, or if you request an EXCLUSIVE lock while another user has locked the same table in SHARE mode.
The SHARE keyword locks a table in shared mode. Shared mode gives other processes read access to the table but denies write access. Other processes cannot update or delete data if a table is locked in shared mode.
- ALTER FRAGMENT
- ALTER INDEX
- ALTER TABLE
- CREATE INDEX
- DROP INDEX
- RENAME COLUMN
- RENAME TABLE
- START VIOLATIONS TABLE
- STOP VIOLATIONS TABLE
- TRUNCATE
The ONLINE keyword in some DDL operations
LOCK TABLE statement behavior on secondary servers
You can set an exclusive lock on a table from an updatable secondary server in a high-availability cluster. For exclusive mode locks requested from a secondary server, sessions can read the table but not update it. This behavior is similar to shared access mode on a secondary server; that is, when one session has an exclusive lock on a given table, no other session can obtain a shared or exclusive lock on that table.
On read-only secondary servers, the session issuing the LOCK TABLE statement does not lock the table and the database server does not return an error to the client.
Shared mode locks in a cluster behave the same as for a standalone server. After a LOCK TABLE statement runs successfully, users can read the table but cannot modify it until the lock is released.