Transacciones en bases de datos con SQL
Concepto muy importante, apréndelo y utilízalo en tus consultas hacia la base de datos, harás sistemas más confiables. 😊

En este post práctico te enseñaré cómo crear transacciones en T-SQL.

Pero antes de hacer la consulta SQL primero una breve definición de qué son las transacciones y para qué se utilizan, empecemos! 🥳

Qué son transacciones en base de datos

Según Microsoft, una transacción en la base de datos es una unidad única de trabajo donde:

Si una transacción tiene éxito, todas las modificaciones de los datos realizadas durante la transacción se confirman y se convierten en una parte permanente de la base de datos.

Si una transacción encuentra errores y debe cancelarse o revertirse, se borran todas las modificaciones de los datos.

En lenguaje coloquial esto quiere decir que una transacción es una porción de código que o se cumple todo o no se cumple nada.

Recuerda esto estimado developer:

Las transacciones se utilizan para garantizar coherencia e integridad en los datos.

Las transacciones en las bases de datos deben cumplir con las propiedades ACID, siglas en inglés para atomicidad, consistencia, aislamiento y durabilidad.

En qué casos se usa

Estoy seguro que llegado a este punto la tienes masomenos clara, es una herramienta muy valiosa, pero por si las dudas aquí te menciono en qué situaciones son útiles, y hasta imprescindibles, usar transacciones.

Se utilizan cuando existen dos o más operaciones que deben ser ejecutadas ambas para que la acción que el usuario realiza tenga sentido.

Por ejemplo:

  • En una transferencia de dinero. Te pongo el siguiente caso: quieres transferir 1000 dólares a tu amigo Mario; sacando del lugar a las validaciones que se pueden hacer de si tienes saldo o no, aquí están implicados al menos dos operaciones: por un lado descontar de tu cuenta 1000 dólares y luego aumentar 1000 dólares a Mario. Imagina por un momento que te descuenten pero que nunca le aumenten a tu amigo. O imagina también que le aumenten a Mario pero a ti no te descuenten, sería un error grave eh?
  • En el pago de nóminas. Claro esto va a depender de cómo esté diseñada tu base de datos, pero por lo general en tu base de datos de pago a personal cuando realices los pagos se insertarán registros a una tabla de pagos para todo el personal que seleccionaste pagar, si fueron 1000 pues se espera que se procesen a todos esos 1000, pero si sólo se procesan a 999 y tu no te enteras, qué pasará con esa persona que le fue mal calculado su pago? Eso sería un problema.

Ya me convenciste, son importantes, muéstrame el código!

Foto de Jose Gil en Unsplash

Aquí te muestro un ejemplo de cómo crear una transacción en SQL Server:

	BEGIN TRY
		BEGIN TRAN
			--==========OPERACIONES=============						
			--Aquí van todas tus operaciones...
            --INSERT INTO ...
			--INSERT INTO ...
			--==================================
		COMMIT TRAN
	END TRY
	BEGIN CATCH
		ROLLBACK TRAN
        --Estas líneas siguientes son opcionales para hacer log o ver posibles errores
		--DECLARE @ERROR VARCHAR(MAX)
		--SET @ERROR = ERROR_MESSAGE()
		--RAISERROR(@ERROR,-1,-1)
	END CATCH

Lo que hace el COMMIT es confirmar todas las operaciones en caso no haya falla alguna. Por otro lado el ROLLBACK deshace todas las operaciones si al menos una ha fallado. Una transacción en SQL siempre debe ir en un bloque TRY CATCH 😉

Las líneas resaltadas son en donde tú añadirás tus operaciones, adecúala a tu caso particular y puedes añadirla a un procedimiento almacenado o ejecutarla directamente en SSMS.

Ahora es cuestión que lo pongas en práctica e investigues qué modificaciones puedes hacerle al código.

Si esta entrada te ha gustado genio, entonces compárte esta entrada 💪😉

Un comentario en «Transacciones en bases de datos con SQL»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *