Se llama
Transacción a una colección de operaciones
que forman una unidad lógica de trabajo en una BD realizada por una o
más sentencias SQL estrechamente relacionadas.
Una
transacción es una unidad de la ejecución de un
programa que lee y escribe datos a y desde la Base de Datos. Puede
consistir en varias operaciones de acceso a la base de datos. Una
Transacción está delimitada por
instrucciones de
inicio transacción y
fin transacción (la transacción consiste en todas las operaciones que se ejecutan entre
inicio transacción y fin transacción).
El concepto de transacción se desarrolló para atender los casos en
los que el estado resultante de la base de datos depende del éxito
completo en una serie de operaciones. Este concepto vio la luz debido a
que varias operaciones sucesivas pueden modificar el resultado de
operaciones anteriores. En esos casos, si alguna operación produce un
error, el estado resultante puede ser indeterminado.
Para solucionar este problema, las transacciones agrupan una serie de
operaciones de manera que es posible garantizar la integridad del
resultado final. O todas las operaciones se ejecutan con éxito y se
confirman (se escriben en la base de datos), o toda la transacción se
considera no realizada. La acción de cancelar una transacción se
denomina deshacer la transacción. Deshacer una transacción permite
anular los cambios y recuperar el estado de la base de datos previo a la
transacción.
Por ejemplo, en una transacción bancaria automatizada, si un banco
transfiere dinero desde la cuenta A a la cuenta B, la retirada de fondos
de A y el depósito en B deben producirse con éxito para procesar los
fondos correctamente, de lo contrario la transacción entera debe
cancelarse.
Esquematizando el proceso de transacciones temos: O se ejecutan
todas las operaciones que componen la transacción, o no se realiza
ninguna.
| En SQL |
| Éxito | Fracaso |
Begin transacction
Instrucción 1
Instrucción 2
...
Commit work
End transacction
| Begin transacction
Instrucción 1
Instrucción 2
...
Rollback work
End transacction
|
///////////////////////
| Propiedades de la Transacción | |
|
|
- Atomicity : Una Transacción (Tx) se ejecuta completamente ó de otra manera se eliminan los cambios parciales realizados.
Begin Transaction - Programa - End Transaction
Responsable: El método de recuperación, de no completar todas las operaciones, devuelve la BD a su estado anterior a empezar esa Tx (rollback).
-
Coherencia: Asegura que los datos queobservamos no cambian (por otros usuarios) hasta que acabemos la Transacción.
Después de terminar una Transacción la Base de datos no viola ninguna de sus reglas: valores obligatorios, claves únicas,etc.
Responsable: los programadores mediante la definición adecuada de la integridad referencial: check, triggers, primary key, foreign key,…
- Aislamiento: Los efectos de una Tx no son visibles a otros usuarios mientras no se confirmen.
Una Transacción en ejecución no puede revelar sus resultados a otras transacciones concurrentes antes de finalizar.
Más aun, si varias transacciones, se ejecutan concurrentemente,
los resultados deben ser los mismos que si ellas se hubieran ejecutado
secuencialmente. Esto se conoce como seriabilidad debido a que su
resultado es la capacidad de volver a cargar los datos iniciales y
reproducir una serie de transacciones para finalizar con los datos en el
mismo estado en que estaban después de realizar transacciones
originales.d
Responsable: el método de concurrencia: mecanismos, reglas, protocolos
- Durabilidad: Si el sistema falla no debe permitir que se pierdan las operaciones realizadas por Tx ya confirmadas.
Responsable: el método o gestor de recuperación.

Control de transacciones en Oracle
Inicio de transacción
Cuando no hay ya una transacción en progreso, y se ejecuta una
sentencia LDD o LMD (interactivamente o dentro de una aplicación)
Cada sentencia LDD es tratada como una transacción N
No existe sentencia de tipo BEGIN TRANSACTION
Fin de transacción
COMMIT: Finaliza la transacción actual y hace permanentes (confirma) los
cambios realizados
ROLLBACK: Finaliza la transacción actual y deshace los cambios realizados
Sentencia COMMIT
Una sentencia COMMIT marca el final de
una transacción correcta, implícita o definida por el usuario. COMMIT
hace que todas las modificaciones efectuadas sobre los datos desde el
inicio de la transacción sean parte permanente de la base de datos, y
además, libera los recursos mantenidos por la conexión. Su sintaxis es
la siguiente:
COMMIT COMMENT 'mensaje' | FORCE 'texto']
COMMENT sirve para comentar la transacción en un máximo 255 caracteres. FORCE fuera de modo manual una transacción dudosa y es de uso exclusivo en sistemas distribuidos de base de datos.
Sentencia SAVEPOINT
Esta sentencia permite crear un punto de restauración dentro de una
transacción, es decir, un punto al que podremos retroceder deshaciendo
todo lo hecho deshaciendo todo lo hecho desde él en adelante. Su
sintaxis es la siguiente
SAVEPOINT nombrePuntoRestauración;
Sentencia ROLLBACK
Señala el final sin éxito de una transacción, elimina todas las
modificaciones de datos realizadas desde el inicio de la transacción y
también libera los recursos que retiene la transacción. Su sintaxis es
la siguiente:
ROLLBACK [WORK] [TO SAVEPOINT nombrePuntoRestauración | FORCE 'texto'];
|
|
No hay comentarios:
Publicar un comentario