On 9/4/23 07:56, David G. Johnston wrote:
On Monday, September 4, 2023, Erik Wienhold <ewie@xxxxxxxxx
<mailto:ewie@xxxxxxxxx>> wrote:
On 04/09/2023 11:51 CEST Lorusso Domenico <domenico.l76@xxxxxxxxx
<mailto:domenico.l76@xxxxxxxxx>> wrote:
> I can't use the savepoint and rollback to savepoint clause.
> I've found some similar problems around on the web, but I can't
catch the
> good way to proceed.
>
> What I'm trying to do is:
> * compare new set of attribute with older
> * if some attributes are part of old set and not in the new
one: delete
> the old
> * but if parameter "on_misisng_delete" is false rollback delete
command
> and rais exception
> The original code in embedded in a function, but the problem is
the same:
Transaction control is not possible in functions. Only in
procedures (CALL)
and DO blocks.
Then explain why the original savepoint command wasn’t a syntax, or
runtime, error? Plus, the error is syntax, usually when you try
something that exists but is disallowed the system gives you some kind
of invalid state exception at runtime,
Maybe this?:
https://www.postgresql.org/docs/current/sql-do.html
"If DO is executed in a transaction block, then the procedure code
cannot execute transaction control statements. Transaction control
statements are only allowed if DO is executed in its own transaction."
David J.
--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx