Savepoint
Un punto con nome all'interno di una transazione a cui si può tornare indietro senza annullare l'intera transazione. Permette l'annullamento parziale: "annulla solo ciò che ho fatto dopo il savepoint X, ma conserva il resto". Alla base delle transazioni annidate.
Meccanismo: SAVEPOINT nome imposta un marcatore; ROLLBACK TO SAVEPOINT nome annulla tutto ciò che segue ma mantiene viva la transazione; RELEASE SAVEPOINT rimuove il marcatore. Casi d'uso: tentare un'operazione rischiosa dentro una transazione più lunga e ritirare solo quella in caso di errore; gestire l'errore di una sotto-operazione senza perdere tutto il lavoro; ORM e driver usano i savepoint per emulare le "transazioni annidate" (la transazione interna diventa un savepoint). Fa parte dello standard SQL ed è supportato da PostgreSQL, MySQL/InnoDB, Oracle e SQL Server (con sintassi propria). Importante in procedure e gestione degli errori. Diverso da un rollback completo, che annulla tutto. Imparentato con le transazioni distribuite e con lo snapshot MVCC.