transaction
begin;
update conti set saldo = saldo - 100 where id = 1;
update conti set saldo = saldo + 100 where id = 2;
commit;
rollback
begin;
insert into ordini(id, totale) values (1, 100);
rollback;
isolation
i livelli di isolamento regolano letture sporche e phantom read.
lock
usa lock minimali per evitare deadlock e performance basse.
panoramica
In questo capitolo su transazioni e isolamento, commit, rollback e consistenza dei dati. L'obiettivo è trasformare i concetti in micro-pattern riutilizzabili con esempi piccoli e verificabili.
Lavora in sequenza: leggi, prova, modifica gli snippet e annota i trade-off principali (performance, leggibilità, manutenzione).
badge: transactions
obiettivi
- capire e applicare transaction in uno scenario reale
- capire e applicare rollback in uno scenario reale
- capire e applicare isolation in uno scenario reale
- capire e applicare lock in uno scenario reale
scheda rapida
SELECT categoria, COUNT(*) AS tot
FROM prodotti
WHERE attivo = TRUE
GROUP BY categoria
ORDER BY tot DESC
LIMIT 5;
Adatta questo scheletro agli esempi della lezione e sostituisci i dati con il tuo dominio.
tips
- usa alias chiari
- filtra presto con WHERE
- controlla i piani di esecuzione
- usa transazioni per operazioni multi-step
- scegli livello di isolamento
- gestisci rollback
tip: Atomicità senza isolamento è una finta sicurezza.
mini progetto
Simula trasferimento fondi.
- apri transazione
- decrementa saldo
- incrementa l'altro
- commit o rollback
output atteso: uno script o query ripetibile con risultati verificabili.
checklist
- ho eseguito gli snippet e controllato l'output
- ho annotato almeno 2 trade-off
- ho completato il mini progetto
- ho salvato un riepilogo personale