Repaso
English

Una transferencia bancaria resta dinero de A y lo suma a B. ¿Por qué ejecutar ambas cosas en una transacción?

Opciones

  1. Para que ambas actualizaciones vayan más rápido en el servidor
  2. Ambos cambios ocurren juntos o ninguno ocurre, así no se pierde dinero (Opción correcta)
  3. Las transacciones cifran los datos durante la transferencia
  4. Para bloquear toda la base de datos del banco durante la actualización

Respuesta

Para que ambos cambios ocurran juntos o no ocurra ninguno; una caída a mitad de camino no puede perder dinero

Por qué

Una transacción agrupa varias sentencias en una unidad de todo o nada (atomicidad).

Si el sistema cae después de restar de A pero antes de sumar a B, la base de datos deshace toda la transacción, así que A conserva el dinero.

La inicias con BEGIN, la terminas con COMMIT o la deshaces con ROLLBACK.

BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 'A';
UPDATE accounts SET balance = balance + 100 WHERE id = 'B';
COMMIT;

Recuerda

Transacción = todo o nada.

Términos clave

Practica esta pregunta en Repaso