Vous êtes sur la page 1sur 2

TRANSACCIONES

QUE ES UNA TRANSACCIN EN SQL?

mayo 20, 2014 James Revelo

Una transaccin es un conjunto secuencial de cambios a una base de datos. Las


transacciones se emplean como mecanismo de peticin para bases de datos
de multiusuarios (concurrencia).

Los ejemplos mas bsicos de transacciones son la


nsercin, borrado y actualizacin de los datos de una tabla. Aunque puede
generarse una transaccin mas compleja que contenga una serie de pasos con
respecto a informacin particular de la base de datos.

Un ejemplo de una transaccin popular sera un retiro bancario, donde se


deben consultar los datos y fondos del usuario, luego determinar si es posible retirar
el dinero o no, seguido actualizar la cuenta y finalmente salir de la cuenta.

Esta transaccin asegura que ningn dato se pierda y mucho menos se pierda
el dinero. Aunque otros usuarios acceden en ese momento desde otra parte del pas
a la base de datos del banco, el sistema gestor de bases de datos administra la
ejecucin de mltiples transacciones concurrentes para darte tu dinero sin
problemas.

Propiedades de una transaccin


Las transacciones deben poseer las siguientes caractersticas para ser
exitosas e integrales:
Atomicidad : Todas las sentencias dentro de la transaccin deben ejecutarse
sin errores. Si por algn motivo no se cumplen, la transaccin aborta en el
punto de ruptura y deshace todo los cambios realizados. Como quien dice O
todo o Nada!.
Consistencia: Se debe asegurar que todos los cambios en la base de datos
sean correctos y estn guardados.
Aislamiento: La transaccin debe actuar independientemente de otra, dos
transacciones no pueden estar visualizando la misma informacin a tiempo.
Durabilidad: La transaccin debe asegurar que los cambios que har
persistirn aunque el sistema falle.
Control de una transaccin
Para dirigir el flujo de una transaccin con efectividad y mantener sus
propiedades, existen las siguientes sentencias en SQL. La sintaxis y etiqueta
dependen de cada gestor de bases de datos:
COMMIT : guarda los cambios.
ROLLBACK: deshace los cambios.
SAVEPOINT: crea un punto de restauracin dentro de un conjunto de
transacciones para luego deshacer los cambios si es necesario.

Iniciar una transaccin


Para sincronizar las actividades es necesario indicarle al SGBD que vamos a
iniciar una transaccin. Depende del sistema la forma de inicializar una
transaccin.
En SQL SERVER 2008 podemos inicializar una transaccin mediante BEGIN TRAN
y en MYSQL con el comando START TRANSACTION.

Ejemplo SQL SERVER 2008


A continuacin veremos una transaccin completa en SQL SERVER 2008
extrada del libro SQL Server 2008 SQL, Transact SQL: Diseo y creacin de una
base de datos Escrito por Jrome Gabillaud. La transaccin consiste en un aumento
de tarifas para ciertos productos de una base de datos comercial. Veamos:

BEGIN TRAN aumento


UPDATE ARTICULOS
SET preciounit_art = preciounit_art*2
WHERE codigo_cat=01
SAVE TRAN P1
UPDATE ARTICULOS
SET preciounit_art = preciounit_art*1.1
WHERE codigo_cat=02
El aumento en la categoria 01 se conserva
ROLLBACK TRAN P1
Validacion
COMMIT TRAN aumento

En el ejemplo anterior vemos todas las sentencias de control de transaccin.


Iniciamos la transaccin con BEGIN TRAN y terminamos confirmando y guardando
con COMMIT TRAN.

Vous aimerez peut-être aussi