Sei sulla pagina 1di 11

Transacciones SQL

UNEMI FACI

Son instrucciones que nos ayudan a controlar la correcta


ejecucin de mltiples sentencias en una misma
ejecucin
Si se producen errores al ejecutar, sea por ndices,
datos invlidos de reglas de validacin, cortes
fortuitos de energa, errores de hardware o
transferencia de informacin

Estos errores pueden ocurrir justo cuando pasa por


una de estas sentencias mltiples

Supongamos que se va a grabar la matrcula y luego se


graban las asignaturas

Si graba la matrcula y luego cuando


esta grabando las asignaturas ocurre un
error estas no se graban

Pero igual queda ya grabada la


matrcula, pero sin asignaturas

Esto crea inconsistencia de datos en las


tablas al momento de grabar

Existen tres instrucciones que ayudan a


controlar estos probables errores

Begin Transaction = Empieza un bloque de


transacciones

Commit Transaction = Graba fsicamente


todo lo actuado dentro de la transaccin

RollBack Transaction = deshace todo lo


actuado dentro de la transaccion

Intento y captura de excepciones de


error
Dentro de las
instrucciones se
pueden colocar
instrucciones para
capturar errores

Una de esas
instrucciones es el TRY
que empieza un bloque
si durante toda esa
ejecucin se produce
un error pasa a otro
bloque

Cabe anotar que todo


bloque empieza con un
BEGIN y terminar con
un END

El otro bloque es un
CATCH en donde se
puede presentar
mensajes o sentencias
para identificar errores
y dar por terminadas
las instrucciones

Tanto los bloques de


transacciones como el
de captura de errores
pueden actuar juntos

Ejemplo Bsico
Creamos una tabla en alguna base de
datos

Create table Herramientas


(idH int primary key identity, des_herram
varchar(30), stock smallint check
stock>=0))

Ejemplo Bsico
Insertamos algunos registros

Insert into Herramientas


(Martillo,4)
Insert into Herramientas
Insert into Herramientas
Insert into Herramientas
Insert into Herramientas
(Destornillador,6)

values
values (Sierra,2)
values (Esmeril,3)
values (Taladro,2)
values

Ejemplo Bsico
Iniciamos una transaccin
Begin transaction

Ejecutamos una accin, por ejemplo aumentar el


stock a todas las herramientas

Update herramientas ser stock = stock + 1

Ejemplo Bsico
Para hacer reales los cambios efectuados, confirmamos la
transaccin, hasta mientras no se modifican los datos
fsicamente

Commit transaction
Si queremos deshacer la accin efectuada
mientras se inicio la transaccin, se escribe

Rollback transaction

Sentencias tiles para captura de


errores
Procedimiento para mostrar los
errores generados: usp_GetErrorInfo
@@TRANCOUNT es un contador de
transacciones un BEGIN lo
incrementa en un 1 un ROLLBACK lo
disminuye de tal forma que se lo
puede utilizar para dar por asentada
toda la transaccin o para deshacerla

Cdigo para crear procedimiento


almacenado de presentacin de
errores

CREATE PROCEDURE usp_GetErrorInfo


AS
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() as ErrorState,
ERROR_PROCEDURE() as ErrorProcedure,
ERROR_LINE() as ErrorLine,
ERROR_MESSAGE() as ErrorMessage;

Potrebbero piacerti anche