Saltar al contenido

Transacciones

SQL · Unidad 11: Modificar datos

Otra base, la empresa. En Legal, el departamento 4, no trabaja nadie, y la dirección le pasa 5000 de sus 20000 a Marca, el 3, que tiene 30000. Son dos UPDATE, uno que resta y otro que suma. Entre los dos hay un momento en que a la empresa le faltan 5000. Si algo se corta justo ahí, ese dinero no está en ningún departamento.

Una transacción junta varias sentencias para que se guarden como una. BEGIN; la abre, y COMMIT; la cierra y guarda todo de una vez. Hasta el COMMIT no hay nada guardado, y si la conexión se corta antes, la base tira todo lo de en medio.

BEGIN;
UPDATE departamentos
SET presupuesto = presupuesto - 5000
WHERE id = 4;
UPDATE departamentos
SET presupuesto = presupuesto + 5000
WHERE id = 3;
COMMIT;
SELECT id, nombre, presupuesto
FROM departamentos;

Devuelve

idnombrepresupuesto
1Ventas50000
2Sistemas80000
3Marca35000
4Legal15000

El resto de la explicación está en la lección, que es del plan completo.

Ejercicios de esta lección

Se hacen en la app, que los corrige al momento y explica por qué.

  1. 1. Completa el código

    Sistemas, el departamento 2, le pasa 8000 a Ventas, el 1. Completa las dos palabras que abren y cierran la transacción, para que los dos UPDATE se guarden juntos.

  2. 2. Predice la salida

    Legal le pasa 5000 a Marca. Marca tenía 30000, y Legal, 20000. Alguien abre la transacción, corre los dos UPDATE y la cierra así. ¿Qué devuelve el SELECT?

  3. 3. Ordena las líneas

    La dirección quiere ver cuánto sumarían los presupuestos si a cada departamento se le dejara la mitad, sin que el recorte quede guardado. Ordena el ensayo. Va el cambio dentro de una transacción, un SELECT que lo mira, la marcha atrás y un último SELECT que comprueba que todo sigue en su sitio. Sobran dos líneas.

  4. 4. Opción múltiple

    En una base de verdad, recursos humanos les sube 200 a las dos vendedoras. Quien lo hace abre una transacción, corre el UPDATE y, antes de cerrar, mira. El SELECT enseña que Carmen, la directora, también gana 200 más. ¿Cuál es la siguiente línea?

  5. 5. Encuentra el bug

    Ventas, el departamento 1, le pasa 6000 a Sistemas, el 2. Antes del COMMIT, quien lo escribió mira el total, que tenía que seguir en 180000. Dice 174600. ¿Qué línea tiene el problema?

  6. 6. Opción múltiple

    En una base de verdad abres una transacción, corres los dos UPDATE del traspaso, miras el total, que está bien, y la conexión se corta sin que hayas escrito COMMIT. ¿Qué queda guardado?

  7. 7. Completa el código

    Valeria, la clienta 5, compra hoy 2 Tabletas, el producto 6. Había 7 Tabletas y 3 Portátiles, que son los dos equipos de la tienda. Completa la venta.

  8. 8. Opción múltiple

    ¿Cuál de estos cambios necesita una transacción?

  9. 9. Escribe el código

    Luis, el cliente 2, pide que la tienda borre sus datos, y con ellos todos sus pedidos. Escribe las dos sentencias dentro de la transacción y ciérrala de forma que el cambio quede guardado. El BEGIN; ya está. Si la dejas abierta, la app te dirá que ya hay una transacción abierta.

Hacer esta lección

Se abre en el navegador. Esta lección es del plan completo; la primera unidad de cada curso es gratis.

Ver todas las lecciones →