Una transferencia bancaria resta dinero de A y lo suma a B. ¿Por qué ejecutar ambas cosas en una transacción?
Opciones
- Para que ambas actualizaciones vayan más rápido en el servidor
- Ambos cambios ocurren juntos o ninguno ocurre, así no se pierde dinero (Opción correcta)
- Las transacciones cifran los datos durante la transferencia
- 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.