45.4. Управление транзакциями#

45.4. Управление транзакциями

45.4. Управление транзакциями

SPI_commit — зафиксировать текущую транзакцию
SPI_rollback — прерывает текущую транзакцию
SPI_start_transaction — устаревшая функция

Невозможно выполнить команды управления транзакциями, такие как COMMIT и ROLLBACK, через функции SPI, такие как SPI_execute. Однако, существуют отдельные функции интерфейса, которые позволяют управлять транзакциями через SPI.

Не рекомендуется начинать и завершать транзакции в произвольных пользовательских SQL-вызываемых функциях без учета контекста, в котором они вызываются. Например, граница транзакции в середине функции, которая является частью сложного SQL-выражения, которое является частью некоторой SQL-команды, вероятно, приведет к неясным внутренним ошибкам или сбоям. Представленные здесь функции интерфейса в первую очередь предназначены для использования реализациями процедурных языков для поддержки управления транзакциями в процедурах уровня SQL, которые вызываются командой CALL, с учетом контекста вызова CALL. Процедуры, использующие SPI и реализованные на языке C, могут реализовать ту же логику, но детали этого выходят за рамки данной документации.