Diferència entre revisions de la pàgina «SQL transaccions»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
Línia 13: Línia 13:
  
 
== Exercicis ==
 
== Exercicis ==
 +
Amb ajuda de 2 consoles concurrents de mysql comprova els modes de treball de les transaccions i de LOCK TABLE.
  
 
# Comprova la diferència entre ''lock read'' i ''lock write''. Pensa't alguna manera de demostrar-ho al professor.
 
# Comprova la diferència entre ''lock read'' i ''lock write''. Pensa't alguna manera de demostrar-ho al professor.
#...
+
# Comprova que quan inicies una transacció els canvis no es consoliden fins que fas COMMIT

Revisió del 20:46, 14 set 2015

Manipular les bases de dades és quelcom molt delicat i on un error pot suposar una pèrdua de moltes dades. Això pot passar molt fàcilment amb les comandes DELETE i UPDATE, ja que cal que continguin una clàusula de condició WHERE, i si ens equivoquem en aquesta podem afectar a totes les dades.

Necessitem, doncs algun tipus de UNDO (oepració de "desfer els canvis"). Aquesta funcionalitat és la que s'implementa amb les transaccions. Podeu veure la sintaxi complerta a la web de MySQL.

Les comandes de transaccions són les següents:

  • start transaction: tots els canvis es refereixen des del punt en què executem aquesta comanda. Si desfem els canvis, tornarem a aquest punt.
  • rollback: equival a UNDO. Desfà tots els canvis i torna a la situació immediatament posterior al "start transaction".
  • commit: consolida els canvis i els fa permanents, sense possibilitat de tornar enrere.

Molt relacionades amb aquestes hi ha les instruccions de més baix nivell per protecció de concurrència: LOCK TABLES. Amb aquestes podem bloquejar les operacions sobre les taules per part d'altres usuaris o sessions:

  • lock read: bloqueja la taula però les operacions de lectura pels altres sessions estan permeses.
  • lock write: bloqueja la taula completament.

Exercicis

Amb ajuda de 2 consoles concurrents de mysql comprova els modes de treball de les transaccions i de LOCK TABLE.

  1. Comprova la diferència entre lock read i lock write. Pensa't alguna manera de demostrar-ho al professor.
  2. Comprova que quan inicies una transacció els canvis no es consoliden fins que fas COMMIT