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.