Les transaccions són una part fonamental de 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 sobre les instruccions de control de transaccions en SQL, que ens permeten gestionar les transaccions de manera efectiva.

Conceptes Clau

Abans de començar amb les instruccions específiques, és important comprendre alguns conceptes clau:

  • Transacció: Una seqüència d'una o més operacions SQL que es tracten com una unitat indivisible. Una transacció ha de complir les propietats ACID (Atomicitat, Consistència, Aïllament, Durabilitat).
  • Commit: Finalitza una transacció i fa permanents tots els canvis realitzats durant la transacció.
  • Rollback: Reverteix tots els canvis realitzats durant la transacció, retornant la base de dades al seu estat anterior a l'inici de la transacció.
  • Savepoint: Marca un punt dins d'una transacció al qual es pot tornar més tard amb un rollback parcial.

Instruccions de Control de Transaccions

  1. START TRANSACTION o BEGIN

Aquesta instrucció inicia una nova transacció. Totes les operacions SQL posteriors formaran part d'aquesta transacció fins que es realitzi un COMMIT o ROLLBACK.

START TRANSACTION;
-- o
BEGIN;

  1. COMMIT

La instrucció COMMIT finalitza la transacció actual i fa permanents tots els canvis realitzats durant la transacció.

COMMIT;

  1. ROLLBACK

La instrucció ROLLBACK reverteix tots els canvis realitzats durant la transacció actual, retornant la base de dades al seu estat anterior a l'inici de la transacció.

ROLLBACK;

  1. SAVEPOINT

La instrucció SAVEPOINT crea un punt de salvaguarda dins d'una transacció. Es pot utilitzar per marcar un punt al qual es pot tornar més tard amb un ROLLBACK TO SAVEPOINT.

SAVEPOINT savepoint_name;

  1. ROLLBACK TO SAVEPOINT

Aquesta instrucció reverteix la transacció fins al punt de salvaguarda especificat, però no finalitza la transacció.

ROLLBACK TO SAVEPOINT savepoint_name;

  1. RELEASE SAVEPOINT

Aquesta instrucció elimina un punt de salvaguarda creat anteriorment. Després d'això, no es pot utilitzar ROLLBACK TO SAVEPOINT per aquest punt de salvaguarda.

RELEASE SAVEPOINT savepoint_name;

Exemple Pràctic

Vegem un exemple pràctic que utilitza aquestes instruccions de control de transaccions:

-- Iniciar una nova transacció
START TRANSACTION;

-- Inserir una nova fila en la taula 'clients'
INSERT INTO clients (nom, email) VALUES ('Joan', '[email protected]');

-- Crear un punt de salvaguarda
SAVEPOINT after_insert;

-- Actualitzar la fila inserida
UPDATE clients SET email = '[email protected]' WHERE nom = 'Joan';

-- Revertir els canvis fins al punt de salvaguarda
ROLLBACK TO SAVEPOINT after_insert;

-- Finalitzar la transacció i fer permanents els canvis
COMMIT;

En aquest exemple, primer iniciem una transacció i inserim una nova fila en la taula clients. Després, creem un punt de salvaguarda anomenat after_insert. A continuació, actualitzem la fila inserida, però després decidim revertir aquest canvi utilitzant ROLLBACK TO SAVEPOINT. Finalment, fem permanents els canvis realitzats abans del punt de salvaguarda amb COMMIT.

Exercicis Pràctics

Exercici 1

  1. Inicia una nova transacció.
  2. Inserta una nova fila en una taula de la teva base de dades.
  3. Crea un punt de salvaguarda.
  4. Actualitza la fila inserida.
  5. Reverteix els canvis fins al punt de salvaguarda.
  6. Finalitza la transacció.

Solució

START TRANSACTION;
INSERT INTO clients (nom, email) VALUES ('Maria', '[email protected]');
SAVEPOINT after_insert;
UPDATE clients SET email = '[email protected]' WHERE nom = 'Maria';
ROLLBACK TO SAVEPOINT after_insert;
COMMIT;

Exercici 2

  1. Inicia una nova transacció.
  2. Inserta dues noves files en una taula de la teva base de dades.
  3. Crea un punt de salvaguarda després de cada inserció.
  4. Reverteix els canvis fins al primer punt de salvaguarda.
  5. Finalitza la transacció.

Solució

START TRANSACTION;
INSERT INTO clients (nom, email) VALUES ('Anna', '[email protected]');
SAVEPOINT after_first_insert;
INSERT INTO clients (nom, email) VALUES ('Pere', '[email protected]');
SAVEPOINT after_second_insert;
ROLLBACK TO SAVEPOINT after_first_insert;
COMMIT;

Conclusió

Les instruccions de control de transaccions són essencials per gestionar la integritat i la consistència de les dades en una base de dades. Amb START TRANSACTION, COMMIT, ROLLBACK, SAVEPOINT, ROLLBACK TO SAVEPOINT i RELEASE SAVEPOINT, podem controlar de manera precisa com i quan es fan permanents els canvis en la base de dades. Practicar amb aquests conceptes és crucial per convertir-se en un expert en SQL.

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