Управление транзакциями
примечание
Эта страница переведена при помощи нейросети GigaChat.
В процедуре, вызываемой с верхнего уровня или анонимном блоке кода (DO
), вызываемом с верхнего уровня, можно управлять транзакциями. Чтобы зафиксировать текущую транзакцию, вызовите команду commit
. Чтобы откатить текущую транзакцию, вызовите команду rollback
. Обратите внимание, что невозможно выполнить команды SQL COMMIT
или ROLLBACK
через spi_exec
или аналогичные. Это должно быть сделано с использованием этих функций. После завершения транзакции новая транзакция автоматически начинается, поэтому нет отдельной команды для этого.
Пример:
CREATE PROCEDURE transaction_test1()
LANGUAGE pltcl
AS $$
for {set i 0} {$i < 10} {incr i} {
spi_exec "INSERT INTO test1 (a) VALUES ($i)"
if {$i % 2 == 0} {
commit
} else {
rollback
}
}
$$;
CALL transaction_test1();
Транзакции не могут быть завершены, когда активна явная подтранзакция.