Este documento describe las transacciones en bases de datos. Las transacciones permiten ejecutar múltiples comandos SQL de forma atómica mediante el uso de BEGIN TRANSACTION y END TRANSACTION. Las propiedades clave de las transacciones son atomicidad, consistencia, aislamiento y durabilidad. También describe los tipos de transacciones como implícitas, explícitas y de ámbito de lote, así como los comandos BEGIN TRANSACTION, ROLLBACK TRANSACTION y COMMIT TRANSACTION.
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
DBII Transacciones SQL guía completa
1. BASE DE
DATOS IIIng. Marco Aurelio Porro Chulli
Ingeniería de Sistemas y
Telemática
INTEGRANTES:
Betzabeth Yameli Maldonado Idrogo.
Yordin Alberto Pérez Saucedo.
TRANSACCIONES
2. Las transacciones de la base de datos reflejan operaciones que son
activadas por eventos como comprar un producto, registrarse para un
curso o hacer un deposito en una cuenta de cheques.
Ejecución de múltiples comandos SQL de forma atómica, las sentencias
necesitan incluirse en una unidad lógica de trabajo (LUW Logical Unit of
Work)
Está delimitada por constructores como Begin Transaction (inicia la
transacción) y End Transaction (Finaliza el bloque de proceso).
3. Requiere que todas las
operaciones se
completen; si no es así, la
transacción se aborta;
una transacción es
tratada como una sola
unidad lógica de trabajo,
indivisible.
Atomicidad
(Atomicity)
Consistencia
(Consistency)
Cuando se emplea una
transacción, la base de
datos debe estar en un
estado consistente; si
cualquiera de las partes
de la transacción viola
una restricción de
integridad, toda la
transacción se aborta.
Aislamiento
(Isolation)
Propiedad que
asegura que una
operación no afecta
a otras. Esto asegura
que la relación de
dos transacciones
sobre la misma
transacción no
generará ningún
tipo de error
Durabilidad
(Durability)
Propiedad que
asegura que, una
vez realizada la
operación, está
persistirá y no se
podrá deshacer,
aunque falle el
sistema.
4. Transacciones Implícitas
Cuando el Gestor de Datos comienza una
transacción automáticamente cada vez que se
produce una actualización de datos, pero el que
dicha transacción se confirme o se deshaga, lo debe
indicar el programador.
Se inicia implícitamente una nueva transacción
cuando se ha completado la anterior, pero cada
transacción se completa explícitamente con una
instrucción COMMIT o ROLLBACK.
Transacciones Explícitas
Son las que iniciamos nosotros "a mano" mediante
instrucciones SQL, los programadores son los que
indican qué operaciones va a abarcar.
Cada transacción se inicia explícitamente con la
instrucción BEGIN TRANSACTION y se termina
explícitamente con una instrucción COMMIT o
ROLLBACK.
5. Transacciones De ámbito de lote
Una transacción implícita o explícita de
Transact-SQL que se inicia en una sesión
de MARS (conjuntos de resultados activos
múltiples), que solo es aplicable a MARS,
se convierte en una transacción de ámbito
de lote. Si no se confirma o revierte una
transacción de ámbito de lote cuando se
completa el lote, SQL Server la revierte
automáticamente.
Configuración
automática
El Gestor de Datos inicia una
transacción automáticamente
por cada operación que
actualice datos. De este modo
mantiene siempre la
consistencia de la base de
datos, aunque puede generar
bloqueos.
6. BEGIN TRANSACTION
Marca el punto de inicio de una transacción explícita.
Representa un punto en el que los datos a los que hace referencia una
conexión son lógica y físicamente coherentes. Si se producen errores, se
pueden revertir todas las modificaciones realizadas en los datos después de
BEGIN TRANSACTION para devolver los datos al estado conocido de
coherencia.
Cada transacción dura hasta que se completa sin errores y se emite COMMIT
TRANSACTION para hacer que las modificaciones sean una parte permanente
de la base de datos, o hasta que se produzcan errores y se borren todas las
modificaciones con la instrucción ROLLBACK TRANSACTION.
SINTAXIS
--Applies to SQL Server and Azure SQL Database BEGIN { TRAN |
TRANSACTION } [ { transaction_name | @tran_name_variable } [ WITH MARK [
'description' ] ] ] [ ; ]
7. ROLLBACK TRANSACTION
Revierte una transacción al principio de la misma. No se
confirman cambios para la transacción en la base de datos. La
instrucción ROLLBACK es idéntica a ROLLBACK WORK,
ROLLBACK TRAN y ROLLBACK TRANSACTION.
Una transacción no se puede revertir después de ejecutar una
instrucción COMMIT TRANSACTION, excepto cuando COMMIT
TRANSACTION está asociada a una transacción anidada
incluida en la transacción que se revierte. En esta instancia, la
transacción anidada se revierte, incluso si ha emitido una
instrucción COMMIT TRANSACTION para ella.
SINTAXIS
ROLLBACK { TRAN | TRANSACTION }
[ transaction_name | @tran_name_variable
| savepoint_name | @savepoint_variable ]
[ ; ]
8. COMMIT TRANSACTION
Marca el final de una transacción explícita o de confirmación automática. Esta
instrucción hace que los cambios en la transacción se confirmen
permanentemente en la base de datos. La instrucción COMMIT es idéntica a
COMMIT WORK, COMMIT TRAN y COMMIT TRANSACTION.
Si la transacción que se ha confirmado era una transacción Transact-SQL
distribuida, COMMIT TRANSACTION hace que MS DTC utilice el protocolo de
confirmación en dos fases para confirmar los servidores involucrados en la
transacción.
Si una transacción local afecta a dos o más bases de datos de la misma instancia
del Motor de base de datos, la instancia utiliza una confirmación interna en dos
fases para confirmar todas las bases de datos involucradas en la transacción.
SINTAXIS
Database COMMIT [ { TRAN | TRANSACTION } [ transaction_name |
@tran_name_variable ] ] [ WITH ( DELAYED_DURABILITY = { OFF | ON } ) ] [ ; ]
9. BEGIN TRANSACTION CandidateDelete
WITH MARK N'Deleting a Job Candidate';
GO
USE AdventureWorks2012;
GO
DELETE FROM
AdventureWorks2012.HumanResources.Jo
bCandidate
WHERE JobCandidateID = 13;
GO
COMMIT TRANSACTION CandidateDelete;
GO