Base de datos
Usamos transacciones para poder asegurar integridad de una operación, si por ejemplo necesitamos guardar una factura y esta se compone de Cabecera y Detalle no sedebería guardar si hubo algún error en el detalle.
También podríamos mencionar otros ejemplos, donde se necesitan hacer mas de una operación y de fallar alguna no aplicar nada.
Tenemos dos tipos detransacciones en SQL Server, las implícitas y las explicitas.
Las primeras son aquellas que no debemos indicarle al SQL que hacemos una transacción pero el lo genera, por ejemplo como el siguiente caso.DELETE FROM DISCO
WHERE DISCO = 'METALLICA'
Aquí se ejecutara el delete para todos los discos que cumplan la condición de Metallica, si hay un error al intentar borrar un disco se hará unrollback y no se borrara ninguno, esto se debe a que el delete al igual que el insert y update internamente arman una transacción.
Las transacciones explicitas son aquellas que nosotros indicamos con lasentencia Begin Transaction / Commit o Rollback Transaction.
BEGIN TRANSACTION
INSERT INTO EMPLEADOS (ID, NOMBRE)
VALUES (1,'CONDUIT')
DELETE FROM EMPLEADO
WHEREEMPLEADO = 1
COMMIT TRAN
¿Como funciona el Commit y Rollback?
El commit es el que confirmara la transacción y el rollback es el que la deshará, pero aquí hay algunos detalles muy importantes en sucomportamiento cuando usamos transacciones anidadas.
Primero veamos un ejemplo simple
CREATE TABLE #T1 (ID INT, NOMBRE VARCHAR(50))
GO
CREATE TABLE #T2 (ID INT, FECHA DATETIME NOT NULL)
GOBEGIN TRY
BEGIN TRAN
INSERT INTO #T1 VALUES (1,'CONDUIT')
INSERT INTO #T1 VALUES (1,GETDATE())
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
SELECT @@ERROR
ENDCATCH
En el ejemplo básicamente hacemos dos insert y si hay algún error entramos en la sección del Catch y lo primero que hacemos es el rollback para luego mostrar el error.
Este es un simple...
Regístrate para leer el documento completo.