LOCK
Restringe el acceso a una tabla de la base de datos. Este comando solo es significativo cuando se ejecuta dentro de un bloque de transacciones.
El comando LOCK obtiene un bloqueo del nivel de la tabla en el modo "ACCESS EXCLUSIVE", en el que se espera, si es necesario, que se libere cualquier bloqueo en conflicto. Bloquear una tabla explícitamente en esta manera hace que las lecturas y escrituras de la tabla esperen cuando se las intenta desde otras transacciones o sesiones. Un bloqueo de tabla explícito creado por un usuario temporalmente previene que otro usuario seleccione datos de la tabla o cargue datos en ella. El bloqueo se libera cuando se completa la transacción que contiene el comando LOCK.
Los bloqueos de tabla menos restrictivos son adquiridos implícitamente por comandos que hacen referencia a tablas, como operaciones de escritura. Por ejemplo, si un usuario intenta leer datos de una tabla mientras otro usuario actualiza la tabla, los datos que se leen serán una instantánea de los datos que ya se confirmaron. (En algunos casos, las consultas se detienen si infringen las reglas de aislamiento serializable). Consulte Administración de operaciones de escritura simultáneas.
Algunas operaciones DDL, como DROP TABLE y TRUNCATE, crean bloqueos exclusivos. Estas operaciones previenen las lecturas de datos.
Si se produce un conflicto de bloqueo, Amazon Redshift muestra un mensaje de error para alertar al usuario que inició la transacción en conflicto. La transacción que recibió el conflicto de bloqueo se detiene. Cada vez que se produce un conflicto de bloqueo, Amazon Redshift escribe una entrada en la tabla STL_TR_CONFLICT.
Sintaxis
LOCK [ TABLE ] table_name [, ...]
Parámetros
- TABLE
-
Palabra clave opcional.
- table_name
-
Nombre de la tabla que se bloqueará. Es posible bloquear más de una tabla al utilizar una lista de nombres de tabla delimitada por comas. No es posible bloquear vistas.
Ejemplo
begin; lock event, sales; ...