Pulse para guardar enlace y compartir esta web. Ayuda para Oracle en Twitter Pulse para guardar enlace y compartir esta web. Ayuda para Oracle en Facebook Pulse para guardar enlace y compartir esta web. Búscanos en Google+ Pulse para guardar enlace y compartir esta web Pulse para generar codigo QR del enlace y compartir esta web

LOCK TABLE

Bloquea una tabla o vista.


   LOCK TABLE [esquema.] table [opciones] IN lockmode MODE [NOWAIT]

   LOCK TABLE [esquema.] view [opciones] IN lockmode MODE [NOWAIT]

donde opciones: PARTITION, SUBPARTITION, @dblink

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

Si no ponemos NOWAIT Oracle esperará hasta que la tabla este disponible.

Se pueden bloquear varias tablas en un solo comando si las escribimos separadas por comas.


LOCK TABLE tabla1,tabla2,tabla3 IN ROW EXCLUSIVE MODE;

Bloqueos por defecto

Las sentencias del DML pueden producir bloqueos sobre las filas de la tabla:

Una sentencia SELECT normal no bloquea filas.

Las sentencias INSERT, UPDATE o DELETE realiza un bloqueo ROW EXCLUSIVE de las filas afectadas por el WHERE.

La sentencia SELECT ... FOR UPDATE NOWAIT realiza un bloqueo ROW EXCLUSIVE de las filas afectadas por el WHERE.

Las sentencias COMMIT y ROLLBACK desbloquean las filas bloqueadas anteriormente dentro de la transacción actual.

Aunque una fila este bloqueada (por otra transacción), siempre podemos hacer una SELECT sobre esa fila. Los valores retornados son los anteriores al bloqueo.

Las sentencias UPDATE Y DELETE pueden provocar o sufrir esperas si hay conflictos con otra transacción.

Esta relacionado con el error ORA-00054.

Bloqueos Multiples en las mismas filas con LOCK TABLE

Ademas se pueden ejecutar distintos tipos de bloqueo:

ROW SHARE = Permite hacer bloqueos de tipo ROW EXCLUSIVE o ROW SHARE o SHARE 
sobre las filas bloqueadas.
ROW EXCLUSIVE = Permite hacer bloqueos de tipo ROW EXCLUSIVE o ROW SHARE 
sobre las filas bloqueadas.
SHARE ROW EXCLUSIVE = Permite hacer bloqueos de tipo ROW SHARE sobre las filas bloqueadas.
SHARE = Permite hacer bloqueos de tipo ROW SHARE or SHARE sobre las filas bloqueadas.
EXCLUSIVE = Solo permite hacer SELECT sobre las filas bloqueadas.