4.27 Proč nelze použít COMMIT, ROLLBACK v PL/pgSQL?

Z PostgreSQL
Skočit na navigaci Skočit na vyhledávání

PostgreSQL nepodporuje autonomní transakce uvnitř uložených procedur. Podobně jako zpracování SQL příkazů v PostgreSQL, že každá funkce poběží uvnitř transakce, ale není možné tuto vnější transakci obejít.

Pokud nutně potřebujete řídit transakce z uložených procedur, lze použít dblink, případně použít skript (kód) z klienta. V řadě situací ovšem postačí subtransakce, které jsou v PL/pgSQL k dispozici implicitně - každý blok BEGIN/EXCEPTION/END vytváří subtransakci.