EJEMPLO 1
Trabajaremos con la base de datos Northwind en nuestros ejemplos.
Vamos a realizar una transaccin que modifica el precio de dos productos de la
base de datos.
USE NorthWind
DECLARE @Error int
--Declaramos una variable que utilizaremos para almacenar un posible
cdigo de error
BEGIN TRAN
--Iniciamos la transaccin
UPDATE Products SET UnitPrice=50 WHERE ProductName =Chai
--Ejecutamos la primera sentencia
SET @Error=@@ERROR
--Si ocurre un error almacenamos su cdigo en @Error
EJEMPLO 2
Considere una base de datos bancaria que contiene balances de varias
cuentas de clientes y balances totales de depsito de sucursales. Suponga que
queremos registrar un pago de $100 de la cuenta de Alicia a la de Roberto.
Simplificando la operacin exageradamente, las rdenes SQL para hacerlo se
veran as:
Todo esto sucede dentro del bloque de transaccin, por lo tanto nada es visible
para otras sesiones de la base de datos. Cuando se ejecuta el bloque de
transaccin, las acciones ejecutadas se hacen visibles como una unidad para
otras sesiones, mientras que las acciones de rollback nunca se hacen visibles.
Retomando el ejemplo de la base de datos bancaria, suponga que se debitan
$100 de la cuenta de Alicia y se abonan a la cuenta de Roberto, pero que
despus resulta que se debi abonar a la cuenta de Walter. Esto se podra
hacer usando un punto de recuperacin:
BEGIN;
Este ejemplo, claro, est sobre simplificado, pero existe mucha posibilidad de
control en un bloque de transaccin por medio de los puntos de recuperacin.
Es ms, ROLLBACK TO es la nica manera de retomar el control de un bloque
de transaccin puesto en estado de aborto por el sistema debido a un error,
devolverlo completamente y reiniciarlo.