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