Una transacción es una interacción con una estructura de datos compleja, compuesta por varios procesos que se han de aplicar uno después del otro. La transacción debe realizarse de una sola vez y sin que la estructura a medio manipular pueda ser alcanzada por el resto del sistema hasta que se hayan finalizado.
Técnicamente las transacciones base de datos delimitan un conjunto de operaciones de base de datos (es decir, sentencias SQL), que son procesadas como un todo, de forma que las operaciones que están incluidas dentro de estas transacciones base de datos se validan (commit) o se cancelan (rollback) como una única operación.
Diapositiva 2
Características
Atomicidad (Atomicity): es la propiedad que asegura que la operación se ha realizado o no. y por lo tanto ante un fallo del sistema no puede quedar a medias.
Consistencia (Consistency): es la propiedad que asegura que sólo e empieza aquello que se puede acabar. Por lo tanto, se ejecutan aquellas operaciones que no van a romper las reglas y directrices de integridad de la base de datos.
Aislamiento (Isolation): es la propiedad que asegura que una operación no puede afectar a otras. Esto asegura que la realización de dos transacciones sobre la misma información nunca generará ningún tipo de error.
Permanencia (Durability): es la propiedad que asegura que una vez realizada la operación, esta persistirá y no se podrá deshacer aunque falle el sistema.
La atomicidad frente a fallos se suele implementar con mecanismos de journaling, y la protección frente a accesos concurrentes mediante bloqueos en las estructuras afectadas. La seriabilidad viene garantizada por la atomicidad. La permanencia se suele implementar forzando a los periféricos encargados de almacenar los cambios a confirmar la completa y definitiva transmisión de los datos al medio (generalmente, el disco).
Diapositiva 3
Commit
Consolidar, confirmar o hacer un commit se refiere, en el contexto de la ciencia de la computación y la gestión de datos, a la idea de confirmar un conjunto de cambios provisionales de forma permanente. Un uso popular es al final de una transacción de base de datos.
Sintaxis y Ejemplo
BEGIN TRANSACTION;
DELETE FROM Paises telefonos
WHERE id_telefono = 555555555;
COMMIT TRANSCTION;
Diapositiva 4
Rollback
En tecnologías de bases de datos, un rollback o reversión es una operación que devuelve a la base de datos a algún estado previo.
Sintaxis
ROLLBACK {TRAN | TRANSACTION}
[transaction_name | @tran_name_variable
|savepoint_name | @savepoint_variable]
[;]
Ejemplo
SQL
Copy
USE tempdb;
GO
CREATE TABLE ValueTable ([value] int);
GO
DECLARE @TransactionName varchar(20) = 'Transaction1';
BEGIN TRAN @TransactionName
INSERT INTO ValueTable VALUES(1),(2);
ROLLBACK TRAN @TransactionName;
INSERT INTO ValueTable Values(3),(4);
SELECT [value] FROM ValueTable;
DROP TABLE ValueTable;
Diapositiva 5
Save Point
Nombre-punto-salvaguarda
Especifica el nombre de un punto de salvaguarda
Sintaxis
>>-SAVEPOINT--nombre-punto-salvaguarda--+--------+---------->
'-UNIQUE-'
-ON ROLLBACK RETAIN LOCKS-
>--ON ROLLBACK RETAIN CURSORS--+--------------------------+-----><
Ejemplo
Realizar una operación de retrotracción para los puntos de salvaguarda anidados. Primero cree una tabla denominada DEPARTMENT. Inserte una fila antes de iniciar SAVEPOINT1; inserte otra fila e inicie SAVEPOINT2; después, inserte una tercera fila e inicie SAVEPOINT3.
CREATE TABLE DEPARTMENT
DEPTNO CHAR(6),
DEPTNAME VARCHAR(20),
MGRNO INTEGER)
INSERT INTO DEPARTMENT VALUES ('A20', 'MARKETING', 301)
SAVEPOINT SAVEPOINT1 ON ROLLBACK RETAIN CURSORS
INSERT INTO DEPARTMENT VALUES ('B30', 'FINANCE', 520)
SAVEPOINT SAVEPOINT2 ON ROLLBACK RETAIN CURSORS
INSERT INTO DEPARTMENT VALUES ('C40', 'IT SUPPORT', 430)
SAVEPOINT SAVEPOINT3 ON ROLLBACK RETAIN CURSORS
INSERT INTO DEPARTMENT VALUES ('R50', 'RESEARCH', 150)Copiar
En este momento, la tabla DEPARTMENT existe con las filas A20, B30, C40 y R50. Si ahora emite:
ROLLBACK TO SAVEPOINT SAVEPOINT3Copiar
la fila R50 ya no estará en la tabla DEPARTMENT. Si después emite:
ROLLBACK TO SAVEPOINT SAVEPOINT1Copiar
la tabla DEPARTMENT todavía existirá, pero las filas insertadas desde que se ha establecido SAVEPOINT1 (B30 y C40) ya no estarán en la tabla.
Diapositiva 6
SET TRANSACTION
Se utiliza el comando SET TRANSACTION para establecer la modalidad de acceso para la transacción actual. El cambio no afectará a ninguna transacción posterior. Si se desea cambiar la modalidad de acceso para todas las transacciones de una sesión, utilice el comando SET SESSION.
Sintaxis
El comando SET TRANSACTION tiene la sintaxis siguiente:
SET TRANSACTION {READ WRITE | READ ONLY |ISOLATION LEVEL { SERIALIZABLE READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ}}
Ejemplo
Definir el nivel de aislamiento de la transacción:
MYDB SCH1(USER)=> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET VARIABLE