I thought if I had some application logic that needed a certain kind of
transaction (maybe a non-default isolation level), I could hide that fact in a
procedure. App code (Java/Python/whatever) could remain unaware of transactions
(except maybe needing to retry after a failure) and simply send `call foo(?,
?)` to the DB. But maybe that kind of design is not supported, and application
code needs to start transactions and set isolation levels. Is that accurate? I
supposed a procedure could throw an exception if it doesn’t like the value in
`current_setting('transaction_isolation’)`.
Rob
> On Feb 19, 2019, at 2:38 PM, David G. Johnston <[email protected]>
> wrote:
>
> On Tuesday, February 19, 2019, Rob Nikander <[email protected]
> <mailto:[email protected]>> wrote:
> Are procedures not allowed to commit/rollback if they are called within in
> an outer transaction?
>
> https://www.postgresql.org/docs/11/sql-call.html
> <https://www.postgresql.org/docs/11/sql-call.html>
>
> Also, I tried putting a `start transaction` command in the procedure. I got
> another error: `unsupported transaction command in PL/pgSQL`. Are procedures
> not allowed to start transactions? Or is there another command?
>
> https://www.postgresql.org/docs/11/plpgsql-transactions.html
> <https://www.postgresql.org/docs/11/plpgsql-transactions.html>
>
> David J.
>