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;
0 Comentarios.