45.4. Gerenciamento de transação #

SPI_commit — efetiva a transação corrente
SPI_rollback — interrompe a transação corrente
SPI_start_transaction — função obsoleta

Não é possível executar comandos de controle de transação, como COMMIT e ROLLBACK, através de funções da SPI como SPI_execute. Existem, no entanto, funções de interface separadas que permitem o controle de transações por meio da SPI.

Geralmente não é seguro nem sensato iniciar e finalizar transações em funções arbitrárias que podem ser chamadas por comandos SQL definidos pelo usuário sem levar em conta o contexto no qual elas são chamadas. Por exemplo, um limite de transação no meio de uma função que faz parte de uma expressão SQL complexa, que faz parte de algum comando SQL, provavelmente resultará em falhas ou erros internos obscuros. As funções de interface apresentadas aqui destinam-se, principalmente, a serem usadas por implementações de linguagem procedural, para dar suporte ao gerenciamento de transações em procedimentos no nível SQL chamados pelo comando CALL, levando em conta o contexto da chamada do comando CALL. Os procedimentos que utilizam a SPI implementados em C podem implementar a mesma lógica, mas os detalhes disso estão além do escopo dessa documentação.