You are on page 1of 10

TRANSACCIONES EN TRANSACT SQL

Una transaccin es un conjunto de operaciones Transact SQL que se


ejecutan como un nico bloque, es decir, si falla una operacin Transact
SQL fallan todas. Si una transaccin tiene xito, todas las modificaciones de
los datos realizadas durante la transaccin se confirman y se convierten en
una parte permanente de la base de datos. Si una transaccin encuentra
errores y debe cancelarse o revertirse, se borran todas las modificaciones
de los datos.
El ejemplo clsico de transaccin es una transferencia bancaria, en la que
quitamos saldo a una cuenta y lo aadimos en otra. Si no somos capaces de
abonar el dinero en la cuenta de destino, no debemos quitarlo de la cuenta
de origen.
SQL Server funciona por defecto con Transacciones de confirmacin
automtica, es decir, cada instruccin individual es una transaccin y se
confirma automticamente.
Sobre el ejemplo anterior de la transferencia bancaria, un script debera
realizar algo parecido a lo siguiente:

Esta forma de actuar seria errnea, ya que cada instruccin se ejecutara y


confirmara de forma independiente, por lo que un error dejara los datos
errneos en la base de datos (y ese es el peor error que nos podemos
encontrar!)
2.6.1 Transacciones implcitas y explicitas
Para agrupar varias sentencias Transact SQL en una nica transaccin,
disponemos de los siguientes mtodos:

Transacciones explcitas. Cada transaccin se inicia explcitamente


con la instruccin BEGIN TRANSACTION y se termina explcitamente
con una instruccin COMMIT o ROLLBACK.

Transacciones implcitas. Se inicia automticamente una nueva


transaccin cuando se ejecuta una instruccin que realiza modificaciones
en los datos, pero cada transaccin se completa explcitamente con una
instruccin COMMIT o ROLLBACK.

Para activar-desactivar el modo de transacciones implcitas debemos


ejecutar la siguiente instruccin.

Cuando
la
opcin
ANSI_DEFAULTS
est
establecida
IMPLICIT_TRANSACTIONS tambin se establece en ON.
El siguiente ejemplo muestra
transacciones explicitas.

el

script

anterior

haciendo

en
uso

ON,
de

El siguiente ejemplo muestra el mismo script con transacciones


implcitas:

La transaccin sigue activa hasta que emita una instruccin COMMIT o


ROLLBACK. Una vez que la primera transaccin se ha confirmado o
revertido, se inicia automticamente una nueva transaccin la siguiente vez
que la conexin ejecuta una instruccin para modificar datos.
La conexin contina generando transacciones implcitas hasta que se
desactiva el modo de transacciones implcitas.
Podemos verificar el nmero de transacciones activas a travs de
@@TRANCOUNT.

Otro punto a tener en cuenta cuando trabajamos con transacciones son los
bloqueos y el nivel de aislamiento.

2.6.2 Transacciones anidadas.


Podemos anidar varias transacciones. Cuando anidamos varias
transacciones la instruccin COMMIT afectar a la ltima transaccin
abierta, pero ROLLBACK afectar a todas las transacciones abiertas.
Un hecho a tener en cuenta, es que, si hacemos ROLLBACK de la
transaccin superior se desharn tambin los cambios de todas las
transacciones internas, aunque hayamos realizado COMMIT de ellas.

Una consideracin a tener en cuanta cuando trabajamos con transacciones


anidadas es la posibilidad de utilizar puntos de guardado o SAVEPOINTs.
2.6.3 Puntos de recuperacin (SavePoint).
Los puntos de recuperacin (SavePoints) permiten manejar las
transacciones por pasos, pudiendo hacer rollbacks hasta un punto marcado
por el savepoint y no por toda la transaccin.
El siguiente ejemplo muestra cmo trabajar con puntos de recuperacin.

Caractersticas
Las instrucciones bsicas de SQL son insertar, consultar, modificar, y
eliminar.
En las transacciones existen cuatro caractersticas bsicas:
Atomicidad: Es la propiedad que asegura que las operaciones se han
realizado o no, se realiza el commit para confirmar o el rollback para
deshacer
Consistencia: Es la propiedad que asegura que solo aquello que empieza
se 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 operacin no puede
afectar a otras. Esto asegura que la realizacin de dos transacciones sobre
la misma informacin sean independientes y no generen ningn tipo de
error
Durabilidad: Es la propiedad que asegura que una vez realizada la
operacin esta persistir y no se podr deshacer aunque falle el sistema
Begin Transaction
Insert
Update
Delete
If Error
Rollback

Else
Commit
Datos importantes para tener en cuenta

Las transacciones permiten agrupar pasos fsicos cuando se realizan


modificaciones en las bases de datos.
En las transacciones se consolidan con dos instrucciones bsicas

COMMIT: Es la confirmacin de la transaccin para la modificacin de los


datos de la base de datos
ROLLBACK: Es la que anula cualquier modificacin realizada a la base de
datos.

2.6.4 Ejercicio de transacciones

Ingrese al Servidor mediante el Managament Studio.

Cree una base de datos llamada Ventas, dentro de ella una tabla llamada
Ventas igualmente, observe la imagen para ver mejor el diseo.

Ubquese en esta tabla y de clic en la opcin de

Esto nos lleva a la siguiente pantalla.

Digitamos la siguiente instruccin:

Primero procedemos a seleccionar la informacin de la tabla ventas


y damos click en ejecutar
permite ver la siguiente informacin

lo cual nos

Luego ejecutamos los comandos de la transaccin.


Empezamos por ejecutar
informacin.

Luego ejecutamos el update.

y nos muestra la siguiente

Como podemos ver tenemos 1 fila afectada si deseamos confirmar la


operacin seleccionamos la instruccin COMMIT, y ejecutamos la
instruccin.

Si no deseamos realizar el cambio


Debemos seleccionar la instruccin ROLLBACK y ejecutarla.

Lo que revierte los cambios realizados.

You might also like