Diferència entre revisions de la pàgina «SQL transaccions»
Salta a la navegació
Salta a la cerca
(Es crea la pàgina amb «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 UP…».) |
|||
Línia 7: | Línia 7: | ||
*'''rollback''': equival a UNDO. Desfà tots els canvis i torna a la situació immediatament posterior al "start transaction". | *'''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. | *'''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: [https://dev.mysql.com/doc/refman/5.5/en/lock-tables.html 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 == | ||
+ | |||
+ | # Comprova la diferència entre ''lock read'' i ''lock write''. Pensa't alguna manera de demostrar-ho al professor. | ||
+ | #... |
Revisió del 20:41, 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
- Comprova la diferència entre lock read i lock write. Pensa't alguna manera de demostrar-ho al professor.
- ...