Re: pgsql & transaction doubt - Mailing list pgsql-novice

From A. Kretschmer
Subject Re: pgsql & transaction doubt
Date
Msg-id 20070126074853.GB15591@a-kretschmer.de
Whole thread Raw
In response to pgsql & transaction doubt  (Luca Ferrari <fluca1978@infinito.it>)
List pgsql-novice
am  Fri, dem 26.01.2007, um  8:39:16 +0100 mailte Luca Ferrari folgendes:
> Hi all,
> a little doubt that came into my mind reading the official manual (chapter 37,
> page 677): "functions and trigger procedures are always executed within a
> transaction established by an outer query". What does "outer" means? If I'd
> like a function to be execute within a transaction should I manually begin
> and end the transaction or is the procedure code always executed in a kind of
> subtransaction? I mean, supposing a function raises an exception, what
> happens to all the sql statement issued by the function before the exception?
> Are they automatically rollbacked?

If you call a function "select my_function(param1, param2);", then is
this select the 'outer' query and starts a transaction. An exception
within the function rollback the whole function.

If you have a code like this:

begin;
insert into foo ...
select my_function(param1, param2);
commit;

and the function fails, then fails also the insert before your function.



Andreas
--
Andreas Kretschmer
Kontakt:  Heynitz: 035242/47150,   D1: 0160/7141639 (mehr: -> Header)
GnuPG-ID:   0x3FFF606C, privat 0x7F4584DA   http://wwwkeys.de.pgp.net

pgsql-novice by date:

Previous
From: Luca Ferrari
Date:
Subject: pgsql & transaction doubt
Next
From: "Derrick Betts"
Date:
Subject: Enable/Disable Trigger per single transaction