Les transaccions són un concepte fonamental en la gestió de bases de dades, especialment quan es tracta de mantenir la integritat i la consistència de les dades. En aquest tema, aprendrem què són les transaccions, per què són importants i com es gestionen en SQL.

Què és una transacció?

Una transacció és una unitat de treball que es realitza en una base de dades. Pot consistir en una o més operacions SQL, com ara insercions, actualitzacions o eliminacions. Les transaccions tenen quatre propietats essencials, conegudes com a propietats ACID:

  1. Atomicitat: Una transacció és atòmica, és a dir, totes les operacions dins de la transacció es realitzen completament o no es realitzen en absolut. Si alguna operació falla, totes les operacions es desfan.
  2. Consistència: Una transacció porta la base de dades d'un estat consistent a un altre estat consistent. Això significa que les regles de la base de dades no es violen.
  3. Aïllament: Les operacions dins d'una transacció són aïllades de les operacions d'altres transaccions. Això evita que les transaccions interfereixin entre elles.
  4. Durabilitat: Un cop una transacció es confirma (commit), els canvis realitzats són permanents, fins i tot en cas de fallada del sistema.

Com iniciar una transacció

En SQL, les transaccions es gestionen amb les instruccions BEGIN TRANSACTION, COMMIT i ROLLBACK. A continuació, es mostra un exemple bàsic de com utilitzar aquestes instruccions:

BEGIN TRANSACTION;

-- Operacions SQL
INSERT INTO clients (nom, email) VALUES ('Joan', '[email protected]');
UPDATE comptes SET saldo = saldo - 100 WHERE client_id = 1;
UPDATE comptes SET saldo = saldo + 100 WHERE client_id = 2;

-- Confirmar la transacció
COMMIT;

Explicació del codi

  1. BEGIN TRANSACTION: Inicia una nova transacció.
  2. Operacions SQL: Es realitzen diverses operacions SQL dins de la transacció.
  3. COMMIT: Confirma la transacció, fent permanents tots els canvis realitzats.

Desfer una transacció

Si alguna operació dins d'una transacció falla o si es detecta un error, es pot desfer la transacció utilitzant la instrucció ROLLBACK. Això revertirà tots els canvis realitzats dins de la transacció.

BEGIN TRANSACTION;

-- Operacions SQL
INSERT INTO clients (nom, email) VALUES ('Joan', '[email protected]');
UPDATE comptes SET saldo = saldo - 100 WHERE client_id = 1;

-- Simular un error
IF @@ERROR <> 0
BEGIN
    -- Desfer la transacció
    ROLLBACK;
END
ELSE
BEGIN
    -- Confirmar la transacció
    COMMIT;
END

Explicació del codi

  1. BEGIN TRANSACTION: Inicia una nova transacció.
  2. Operacions SQL: Es realitzen diverses operacions SQL dins de la transacció.
  3. IF @@ERROR <> 0: Comprova si hi ha hagut algun error durant les operacions.
  4. ROLLBACK: Si hi ha un error, es desfà la transacció.
  5. COMMIT: Si no hi ha errors, es confirma la transacció.

Exercicis pràctics

Exercici 1: Transacció bàsica

  1. Inicia una transacció.
  2. Insereix un nou registre a la taula clients.
  3. Actualitza el saldo d'un compte a la taula comptes.
  4. Confirma la transacció.
BEGIN TRANSACTION;

INSERT INTO clients (nom, email) VALUES ('Maria', '[email protected]');
UPDATE comptes SET saldo = saldo + 200 WHERE client_id = 3;

COMMIT;

Exercici 2: Desfer una transacció

  1. Inicia una transacció.
  2. Insereix un nou registre a la taula clients.
  3. Actualitza el saldo d'un compte a la taula comptes.
  4. Simula un error i desfés la transacció.
BEGIN TRANSACTION;

INSERT INTO clients (nom, email) VALUES ('Pere', '[email protected]');
UPDATE comptes SET saldo = saldo - 50 WHERE client_id = 4;

-- Simular un error
IF @@ERROR <> 0
BEGIN
    ROLLBACK;
END
ELSE
BEGIN
    COMMIT;
END

Resum

En aquesta secció, hem après què són les transaccions, per què són importants i com es gestionen en SQL. Hem vist com iniciar, confirmar i desfer una transacció utilitzant les instruccions BEGIN TRANSACTION, COMMIT i ROLLBACK. També hem practicat amb alguns exercicis per reforçar aquests conceptes. En el proper tema, explorarem les propietats ACID en més detall.

Curs de SQL

Mòdul 1: Introducció a SQL

Mòdul 2: Consultes bàsiques de SQL

Mòdul 3: Treballar amb múltiples taules

Mòdul 4: Filtratge avançat de dades

Mòdul 5: Manipulació de dades

Mòdul 6: Funcions avançades de SQL

Mòdul 7: Subconsultes i consultes niades

Mòdul 8: Índexs i optimització del rendiment

Mòdul 9: Transaccions i concurrència

Mòdul 10: Temes avançats

Mòdul 11: SQL en la pràctica

Mòdul 12: Projecte final

© Copyright 2024. Tots els drets reservats