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, могут реализовать ту же логику, но детали этого выходят за рамки данной документации.