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
START TRANSACTION
o BEGIN
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
.
COMMIT
COMMIT
La instrucció COMMIT
finalitza la transacció actual i fa permanents tots els canvis realitzats durant la transacció.
ROLLBACK
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ó.
SAVEPOINT
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
.
ROLLBACK TO SAVEPOINT
ROLLBACK TO SAVEPOINT
Aquesta instrucció reverteix la transacció fins al punt de salvaguarda especificat, però no finalitza la transacció.
RELEASE SAVEPOINT
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.
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
- Inicia una nova transacció.
- Inserta una nova fila en una taula de la teva base de dades.
- Crea un punt de salvaguarda.
- Actualitza la fila inserida.
- Reverteix els canvis fins al punt de salvaguarda.
- 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
- Inicia una nova transacció.
- Inserta dues noves files en una taula de la teva base de dades.
- Crea un punt de salvaguarda després de cada inserció.
- Reverteix els canvis fins al primer punt de salvaguarda.
- 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
- Utilitzar LIKE per a coincidències de patrons
- Operadors IN i BETWEEN
- Valors NULL i IS NULL
- Agrupar dades amb GROUP BY
- Clàusula HAVING
Mòdul 5: Manipulació de dades
Mòdul 6: Funcions avançades de SQL
Mòdul 7: Subconsultes i consultes niades
- Introducció a les subconsultes
- Subconsultes correlacionades
- EXISTS i NOT EXISTS
- Utilitzar subconsultes en les clàusules SELECT, FROM i WHERE
Mòdul 8: Índexs i optimització del rendiment
- Comprendre els índexs
- Crear i gestionar índexs
- Tècniques d'optimització de consultes
- Analitzar el rendiment de les consultes
Mòdul 9: Transaccions i concurrència
- Introducció a les transaccions
- Propietats ACID
- Instruccions de control de transaccions
- Gestionar la concurrència
Mòdul 10: Temes avançats
Mòdul 11: SQL en la pràctica
- Casos d'ús del món real
- Millors pràctiques
- SQL per a l'anàlisi de dades
- SQL en el desenvolupament web