Leonel Alejandro Gómez Hernández
ACLARACION: la herramienta goconqr, falla a veces cuando se suben imagenes adjunto imagen en classroom para probar mi punto, algunas imagenes estarán anexadas en google classroom
Slide 2
¿Qué es una transacción?
(1)
Una transacción se realiza en la ejecución de un programa, y esta delimitado por llamadas a funciones para iniciar o finalizar una transacción. Una transacción consiste de una o muchas operaciones para realizar en una base de datos entre el inicio y el fin de la transacción.
(2)
Una transacción es una ejecución de un programa de usuario, visto por el DBMS como una serie de operaciones lecturas y escrituras, la cual accede a la base de datos que es compartida por varios usuarios en forma simultánea. Es una colección de acciones que hacen transformaciones de los estados de un sistema preservando la consistencia del mismo.
Para asegurar la integridad de los datos, las transacciones tienen que tener las siguientes propiedades:
Atomicidad: Todo o nada.
Consistencia: Garantiza que la transacción nunca deja la base de datos sin haber finalizado.
Aislamiento: Cada transacción es independiente.
Durabilidad: Garantiza que la base de datos mantiene el rastro de los cambios pendientes de tal manera que el servidor pueda recuperarse de una terminación anormal.
Estas propiedades se conocen como ACID.
Slide 4
Estados de una transacción
Activa: El estado inicial; la transacción permanece en este estado durante su ejecución.
Parcialmente comprometida: Después de ejecutarse la ultima instrucción.
Fallida: Tras descubrir que no puede continuar la ejecución normal.
Abortada: Después de haber retrocedido la transacción y restablecido la base de datos a su estado anterior al comienzo de la transacción.
Comprometida: Tras completarse con éxito.
Sentencia para transacciones.
BEGIN;
-- Operaciones SQL
SAVEPOINT [nombre del savepoint];
-- Operaciones SQL
ROLLBACK TO [nombre del save point a regresar];
ROLLBACK; -- si es necesario deshacer todo despues de un error
COMMIT; -- fin
BEGIN: inicia la transacción.
ROLLBACK: termina una transacción, deshace las modificaciones que se hayan hecho, le ejecución continúe con la siguiente instrucción a rollback.
SAVEPOINT: crea un punto de guardado con un nombre, sirve para hacer rollbacks parciales.
SET TRANSACTION: Asigna las caracteristicas de la transacción actual, no tiene efecto en transacciones subsecuentes, se indica el nivel de aislamiento.
COMMIT: finaliza la transacción, todas las modificaciones quedan en firme.
Ejemplo:
BEGIN; --empezamos la transacción
UPDATE accounts SET balance = balance - 100 WHERE name = 'Alice';
SAVEPOINT my_savepoint; -- guardamos punto de guardado.
UPDATE accounts SET balance = balance + 100.00 WHERE name = 'Bob';
-- Nos equivocamos de cuenta, regresa y actualiza a "Wally"
ROLLBACK TO my_savepoint; --regresa al punto donde se guardo my_point.
UPDATE accounts SET balance = balance + 100 WHERE name = 'Wally'; -- actualizamos la cuenta de "Wally"
COMMIT;
Slide 6
Referencias
Fundamentos de bases de datos, cuarta ediciónAbraham Silberschatz, Henry F. Korth, S. Sudarshan McGrawHill.
Transacciones http://alfa.facyt.uc.edu.ve/computacion/pensum/cs0347/download/exposiciones2006-2007/transacciones.pdf
Documentación oficial de PostgreSQL https://www.postgresql.org
Transacciones, aislamiento y candados, Universidad Nacional de Colombia. http://dis.unal.edu.co/~icasta/consejero/SQL_Transacciones_v5.pdf