On 9/4/23 07:56, David G. Johnston wrote:
On Monday, September 4, 2023, Erik Wienhold <e...@ewie.name <mailto:e...@ewie.name>> wrote:

    On 04/09/2023 11:51 CEST Lorusso Domenico <domenico....@gmail.com
    <mailto:domenico....@gmail.com>> 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.kla...@aklaver.com



Reply via email to