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;
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.
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.