Un punto de recuperación es una forma de implementar subtransacciones (también conocidas como transacciones anidadas ) dentro de un sistema de administración de bases de datos relacionales , indicando un punto dentro de una transacción al que se puede " revertir " sin afectar ningún trabajo realizado en la transacción antes de que se creara el punto de recuperación. Pueden existir múltiples puntos de recuperación dentro de una sola transacción. Los puntos de recuperación son útiles para implementar la recuperación de errores complejos en aplicaciones de bases de datos. Si ocurre un error en medio de una transacción de múltiples declaraciones, la aplicación puede recuperarse del error (revirtiendo a un punto de recuperación) sin necesidad de abortar toda la transacción.
Se puede declarar un punto de guardado mediante la emisión de una declaración. Todos los cambios realizados después de que se haya declarado un punto de guardado se pueden deshacer mediante la emisión de un comando. La emisión hará que se descarte el punto de guardado nombrado, pero no afectará a nada más. La emisión de los comandos o también descartará cualquier punto de guardado creado desde el inicio de la transacción principal.
SAVEPOINT nameROLLBACK TO SAVEPOINT nameRELEASE SAVEPOINT nameROLLBACKCOMMIT
Los puntos de guardado se definen en el estándar SQL y son compatibles con todas las bases de datos relacionales SQL establecidas, incluidas PostgreSQL , Oracle Database , Microsoft SQL Server , MySQL , IBM Db2 , SQLite (desde 3.6.8), Firebird , H2 Database Engine e Informix (desde la versión 11.50xC3).