BEGIN
Inicia una transacción. Sinónimo de START TRANSACTION.
Una transacción es una única unidad lógica de trabajo, independientemente de tener un comando o varios comandos. Por lo general, todos los comandos de una transacción se ejecutan en una instantánea de la base de datos cuya hora de inicio se determina con el valor establecido para el parámetro de configuración del sistema transaction_snapshot_begin
.
De manera predeterminada, las operaciones individuales de Amazon Redshift (consultas, instrucciones DDL, cargas) se confirman de manera automática en la base de datos. Si desea suspender la confirmación de una operación hasta que se complete el trabajo subsiguiente, necesita abrir una transacción con la instrucción BEGIN, luego ejecutar los comandos requeridos y cerrar la transacción con una instrucción COMMIT o END. Si es necesario, puede utilizar una instrucción ROLLBACK para detener una transacción en curso. Una excepción a este comportamiento es el comando TRUNCATE, que confirma la transacción en la que se ejecuta y no puede revertirse.
Sintaxis
BEGIN [ WORK | TRANSACTION ] [ ISOLATION LEVEL option ] [ READ WRITE | READ ONLY ] START TRANSACTION [ ISOLATION LEVEL option ] [ READ WRITE | READ ONLY ] Where option is SERIALIZABLE | READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ Note: READ UNCOMMITTED, READ COMMITTED, and REPEATABLE READ have no operational impact and map to SERIALIZABLE in Amazon Redshift. You can see database isolation levels on your cluster by querying the stv_db_isolation_level table.
Parámetros
- WORK
-
Palabra clave opcional.
- TRANSACTION
-
Palabra clave opcional; WORK y TRANSACTION son sinónimos.
- ISOLATION LEVEL SERIALIZABLE
-
El aislamiento serializable es compatible de manera predeterminada, por lo que el comportamiento de la transacción es el mismo si la sintaxis está incluida o no en la instrucción. Para obtener más información, consulte Administración de operaciones de escritura simultáneas. No se admite otro nivel de aislamiento.
nota
El estándar de SQL define cuatro niveles de aislamiento de transacciones para prevenir lecturas sucias (donde una transacción lee los datos escritos por una transacción paralela sin confirmar), lecturas no repetibles (donde una transacción relee datos que leyó anteriormente y descubre que otra transacción que se confirmó después de la lectura inicial modificó los datos) y lecturas fantasmas (donde una transacción vuelve a ejecutar una consulta, devuelve un conjunto de filas que cumplen una condición de búsqueda y luego descubre que el conjunto de filas ha cambiado debido a otra transacción recientemente confirmada):
-
Lectura sin confirmar: las lecturas sucias, lecturas no repetibles y lecturas fantasmas son posibles.
-
Lectura confirmada: las lecturas no repetibles y lecturas fantasmas son posibles.
-
Lectura repetible: las lecturas fantasmas son posibles.
-
Serializable: previene lecturas sucias, lecturas no repetibles y lecturas fantasmas.
Aunque puede utilizar cualquiera de los cuatro niveles de aislamiento de las transacciones, Amazon Redshift procesa todos los niveles de aislamiento como serializables.
-
- READ WRITE
-
Le otorga a la transacción permisos de lectura y escritura.
- READ ONLY
-
Le otorga a la transacción permisos de solo lectura.
Ejemplos
En el siguiente ejemplo, se inicia un bloque de transacción serializable:
begin;
En el siguiente ejemplo, se inicia el bloque de transacción con un nivel de aislamiento serializable y permisos de lectura y escritura:
begin read write;