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:
- 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.
- 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.
- 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.
- 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
- BEGIN TRANSACTION: Inicia una nova transacció.
- Operacions SQL: Es realitzen diverses operacions SQL dins de la transacció.
- 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
- BEGIN TRANSACTION: Inicia una nova transacció.
- Operacions SQL: Es realitzen diverses operacions SQL dins de la transacció.
- IF @@ERROR <> 0: Comprova si hi ha hagut algun error durant les operacions.
- ROLLBACK: Si hi ha un error, es desfà la transacció.
- COMMIT: Si no hi ha errors, es confirma la transacció.
Exercicis pràctics
Exercici 1: Transacció bàsica
- Inicia una transacció.
- Insereix un nou registre a la taula
clients
. - Actualitza el saldo d'un compte a la taula
comptes
. - 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ó
- Inicia una transacció.
- Insereix un nou registre a la taula
clients
. - Actualitza el saldo d'un compte a la taula
comptes
. - 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
- 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