Un punt de restauració (en anglès, savepoint) és una marca definida dins d'una transacció de base de dades que permet desfer només una part de les operacions fetes després d'aquell punt, sense cancel·lar tota la transacció. En SQL, els punts de restauració s'utilitzen per donar més control a les aplicacions quan una transacció conté diversos passos i només alguns poden fallar.

Funcionament La instrucció SAVEPOINT crea un punt de restauració amb un nom dins de la transacció activa. Si posteriorment es produeix un error o cal descartar una part del treball, la instrucció ROLLBACK TO SAVEPOINT retorna l'estat de la transacció al moment en què es va crear aquell punt, però manté oberta la transacció principal. Quan el punt ja no és necessari, es pot eliminar amb RELEASE SAVEPOINT, que conserva els canvis posteriors i allibera el nom del punt de restauració.

Ús Els punts de restauració són útils en aplicacions que executen operacions compostes, com ara inserir diverses files, actualitzar registres relacionats o validar dades en diferents fases. Per exemple, un programa pot crear un punt de restauració abans d'intentar una operació arriscada; si aquesta falla, pot tornar només a aquell punt i continuar amb altres parts de la transacció abans de fer COMMIT. Això evita haver de repetir tota la feina anterior.

També s'utilitzen per implementar comportaments semblants a les transaccions imbricades en sistemes que no les ofereixen com a transaccions independents. En aquests casos, cada nivell intern pot correspondre a un punt de restauració, tot i que la confirmació definitiva continua depenent de la transacció exterior.

Limitacions Un punt de restauració no és una còpia de seguretat ni un mecanisme de recuperació davant una fallada completa del sistema. Només té efecte dins d'una transacció activa i desapareix quan la transacció es confirma o es reverteix. A més, l'ús excessiu de punts de restauració pot afegir complexitat al codi i dificultar el seguiment dels canvis.

Referències

Categoria:Bases de dades