1. TRANSACCIONESEN TRANSACT SQL
Una transacción es un conjunto de operaciones Transact SQL que se ejecutan como un único
bloque,esdecir,si fallaunaoperación TransactSQL fallantodas.Si unatransaccióntiene éxito,
todas las modificaciones de los datos realizadas durante la transacción se confirman y se
conviertenenunaparte permanente de labase de datos.Si una transacciónencuentraerrores
y debe cancelarse o revertirse, se borran todas las modificaciones de los datos.
El ejemploclásicode transacciónesunatransferenciabancaria,enlaque quitamossaldoa una
cuentay loañadimosenotra. Si no somoscapaces de abonarel dineroenla cuentade destino,
no debemos quitarlo de la cuenta de origen.
SQL Serverfuncionapordefectocon Transaccionesdeconfirmaciónautomática, esdecir,cada
instrucción individual es una transacción y se confirma automáticamente.
Sobre el ejemploanteriorde latransferenciabancaria, unscriptdeberíarealizaralgoparecidoa
lo siguiente:
2. Esta formade actuar seriaerrónea,yaque cadainstrucciónse ejecutaríayconfirmaríade forma
independiente, por lo que un error dejaría los datos erróneos en la base de datos (¡yese es el
peor error que nos podemos encontrar!)
2.6.1 Transacciones implícitasy explicitas
Para agrupar variassentencias Transact SQL en unaúnica transacción,disponemosde los
siguientesmétodos:
Transaccionesexplícitas. Cadatransacciónse iniciaexplícitamenteconlainstrucción BEGIN
TRANSACTION y se termina explícitamente con una instrucción COMMIT o ROLLBACK.
Transacciones implícitas. Se inicia automáticamente una nueva transacción cuando se
ejecuta una instrucción que realiza modificaciones en los datos, pero cada transacción se
completa explícitamente con una instrucción COMMIT o ROLLBACK.
Para activar-desactivarel modode transaccionesimplícitasdebemosejecutarlasiguiente
instrucción.
Cuando la opción ANSI_DEFAULTS está establecida en ON, IMPLICIT_TRANSACTIONS también
se establece en ON.
El siguiente ejemplo muestra el script anterior haciendo uso de transacciones explicitas.
5. La transacciónsigue activahasta que emitaunainstrucción COMMITo ROLLBACK. Una vezque
la primera transacción se ha confirmado o revertido, se inicia automáticamente una nueva
transacción la siguiente vez que la conexión ejecuta una instrucción para modificar datos.
La conexión continúa generando transacciones implícitas hasta que se desactiva el modo de
transacciones implícitas.
Podemos verificar el número de transacciones activas a través de @@TRANCOUNT.
Otro punto a teneren cuentacuando trabajamoscon transaccionessonlos bloqueosyel nivel
de aislamiento.
2.6.2 Transacciones anidadas.
6. Podemos anidar varias transacciones. Cuando anidamos varias transacciones la instrucción
COMMIT afectará a la última transacción abierta, pero ROLLBACK afectará a todas las
transacciones abiertas.
Un hecho a tener en cuenta, es que, si hacemos ROLLBACK de la transacción superior se
desharán también los cambiosde todas las transaccionesinternas, aunque hayamos realizado
COMMIT de ellas.
Una consideración a tener en cuanta cuando trabajamos con transacciones anidadas es la
posibilidad de utilizar puntos de guardado o SAVEPOINTs.
2.6.3 Puntos de recuperación(SavePoint).
Los puntos de recuperación (SavePoints) permiten manejar las transacciones por pasos,
pudiendohacerrollbackshastaunpuntomarcadoporel savepointynoportodalatransacción.
El siguiente ejemplo muestra cómo trabajar con puntos de recuperación.
7. Características
Las instrucciones básicas de SQL son insertar, consultar, modificar, y eliminar.
En las transacciones existen cuatro características básicas:
Atomicidad: Es la propiedad que asegura que las operacionesse han realizado o no, se realiza
el commit para confirmar o el rollback para deshacer
Consistencia:Es la propiedadque aseguraque soloaquelloque empiezase puede acabar, por
lo tanto se ejecutan solo las operaciones que no vayan a romper las reglas y directrices de
integridad en la base de datos
Aislamiento: 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 sean
independientes y no generen ningún tipo de error
Durabilidad:Es la propiedadque aseguraque unavezrealizadalaoperaciónestapersistiráyno
se podrá deshacer aunque falle el sistema
BeginTransaction
Insert
Update
Delete
If Error
Rollback
Else
Commit
8. Datos importantespara teneren cuenta
Las transacciones permiten agrupar pasos físicos cuando se realizan modificaciones en las
bases de datos.
En las transacciones se consolidan con dos instrucciones básicas
COMMIT: Es la confirmaciónde latransacción para la modificaciónde losdatosde labase de
datos
ROLLBACK: Es la que anulacualquiermodificaciónrealizadaalabase de datos.
2.6.4 Ejercicio de transacciones
Ingrese al Servidormedianteel ManagamentStudio.
Cree una base de datos llamada Ventas, dentro de ella una tabla llamada Ventas igualmente,
observe la imagen para ver mejor el diseño.
Ubíquese enestatabla y de clicen laopciónde .
Esto nosllevaa lasiguiente pantalla.