LOCK TABLE Statement

Manually lock one or more tables.

Syntax:

   LOCK TABLE [schema.] table [options] IN lockmode MODE [NOWAIT]

   LOCK TABLE [schema.] view [options] IN lockmode MODE [NOWAIT]

Options:
      PARTITION (partition)
      SUBPARTITION (subpartition)
      @dblink

lockmodes:
      EXCLUSIVE
      SHARE
      ROW EXCLUSIVE
      SHARE ROW EXCLUSIVE
      ROW SHARE* | SHARE UPDATE*

If NOWAIT is omitted Oracle will wait until the table is available.

Several tables can be locked with a single command - separate with commas

e.g.LOCK TABLE table1,table2,table3 IN ROW EXCLUSIVE MODE;

Default Locking Behaviour

A pure SELECT will not lock any rows.

INSERT, UPDATE or DELETE's - will place a ROW EXCLUSIVE lock.

SELECT…FROM…FOR UPDATE NOWAIT - will place a ROW EXCLUSIVE lock.

Multiple Locks on the same rows with LOCK TABLE

Even when a row is locked you can always perform a SELECT (because SELECT does not lock any rows) in addition to this, each type of lock will allow additional locks to be granted as follows.

ROW SHARE = Allow ROW EXCLUSIVE or ROW SHARE or SHARE locks to be granted to the locked rows.

ROW EXCLUSIVE = Allow ROW EXCLUSIVE or ROW SHARE locks to be granted to the locked rows.

SHARE ROW EXCLUSIVE = Allow ROW SHARE locks to be granted to the locked rows.

SHARE = Allow ROW SHARE or SHARE locks to be granted to the locked rows.

EXCLUSIVE = Allow SELECT queries only

Although it is valid to place more than one lock on a row, UPDATES and DELETE's can still cause a wait if a conflicting row lock is held by another transaction.

* = Oracle 6 optionincluded for compatibility

Related Oracle Commands:

COMMIT
DELETE

INSERT
ROLLBACK
SELECT

UPDATE
DBMS_LOCK

Related Views:

DBA_ALL_TABLES       ALL_ALL_TABLES       USER_ALL_TABLES
DBA_TABLES           ALL_TABLES           USER_TABLES       TAB
DICTIONARY
DICT_COLUMNS
V$LOCK
V$_LOCK
V$LOCKED_OBJECT
V$LOCKS_WITH_COLLISIONS
V$LOCK_ACTIVITY
V$LOCK_ELEMENT


 
Copyright © 1999-2024 SS64.com
Some rights reserved