45.4. Gestión de transacciones #

SPI_commit — confirma la transacción actual
SPI_rollback — aborta la transacción actual
SPI_start_transaction — función obsoleta

No es posible ejecutar comandos de control de transacciones como COMMIT y ROLLBACK a través de funciones SPI como SPI_execute. Existen, sin embargo, funciones de interfaz independientes que permiten el control de transacciones a través de SPI.

Generalmente no es seguro ni sensato iniciar y finalizar transacciones en funciones de usuario arbitrarias invocables desde SQL sin tener en cuenta el contexto en el que se llaman. Por ejemplo, un límite de transacción en medio de una función que forma parte de una expresión SQL compleja que a su vez es parte de algún comando SQL probablemente dará lugar a errores internos oscuros o caídas (crashes). Las funciones de interfaz presentadas aquí están pensadas principalmente para ser utilizadas por implementaciones de lenguajes procedimentales para dar soporte a la gestión de transacciones en procedimientos a nivel de SQL que son invocados por el comando CALL, teniendo en cuenta el contexto de la invocación de CALL. Los procedimientos que utilizan SPI implementados en C pueden implementar la misma lógica, pero los detalles de ello están fuera del alcance de esta documentación.