From: | Rob Nikander <rob(dot)nikander(at)gmail(dot)com> |
---|---|
To: | Postgres General <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: procedures and transactions |
Date: | 2019-02-19 21:48:00 |
Message-ID: | 72DE4DF2-7013-4D03-AD28-426BFD1B78A0@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
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 <david(dot)g(dot)johnston(at)gmail(dot)com> wrote:
>
> On Tuesday, February 19, 2019, Rob Nikander <rob(dot)nikander(at)gmail(dot)com <mailto:rob(dot)nikander(at)gmail(dot)com>> 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.
>
From | Date | Subject | |
---|---|---|---|
Next Message | Adrian Klaver | 2019-02-19 22:34:09 | Re: procedures and transactions |
Previous Message | Samuel Williams | 2019-02-19 21:29:42 | Re: Partial index on JSON column |