transacciones en SQL Server

Venga va, ya que estamos, seguimos con SQL server y las transacciones cuando hay un try catch de por medio.

Cuando hacemos un procedimiento almacenado y tenemos que insertar varios registros que dependen entre si, lo normal es usar transacciones para poder hacer un roll back en caso de que se produzca algún error. Antiguamente los programaba asi:

BEGIN TRANSACTION

/* código del procedimiento*/
IF (@@ERROR <> 0) GOTO ERROR

/* código del procedimiento*/

COMMIT TRAN
RETURN 0

Y al final del procedimiento nuestra anticuada rutina

ERROR:
ROLLBACK TRANSACTION
RETURN 1

Esto sigue funcionando pero es del pleistoceno y es mejor hacerlo con un try catch, que así nos evita tener que estar preguntando cada dos por tres si se ha producido un error:

 
BEGIN TRANSACTION;
BEGIN TRY

/* código del procedimiento*/


END TRY
BEGIN CATCH
    
    IF @@TRANCOUNT > 0
        ROLLBACK TRANSACTION;
END CATCH;

IF @@TRANCOUNT > 0
    COMMIT TRANSACTION;

Dejar un comentario?

0 Comentarios.

Deje un comentario


NOTA - Puede usar estosHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.