Ali Baba wrote:

Hi Michael,

i want to support explicit commit/rollback support
in pl/pgsql instead of using autocommit feature.
The fine manual is your friend:

http://www.postgresql.org/docs/8.0/static/transaction-iso.html
http://www.postgresql.org/docs/8.0/static/tutorial-transactions.html

Sincerely,

Joshua D. Drake




my requirement is to know how transactions work in
postgres generally and how to support transaction
managment in pl/pgsql

thanks for your help.

--
Asif Ali.


--- Michael Fuhr <[EMAIL PROTECTED]> wrote:

[This question would probably be more appropriate
in
pgsql-general
than in pgsql-hackers.]

On Wed, Aug 17, 2005 at 05:53:14AM -0700, Ali Baba
wrote:
can any one describe how the transaction are
being
handled in postgres.
I think you're talking about how PL/pgSQL
exception
handlers work
with transactions.  See the documentation:


http://www.postgresql.org/docs/8.0/static/plpgsql-control-structures.html#PLPGSQL-ERROR-TRAPPING
function given below should actually insert the
desire
values in test table but it do not save them.
A complete test case would make it easier help.
All
we see in the
example is the start of a transaction and the
creation of a function --
we don't see how you're actually using it nor what
output (e.g., error
messages) it produces.

begin   
x := 1; 
insert into test values (210,20);
x := x/0;

RETURN 0;

exception
when others then
   raise info 'error generated ';
   commit;
   RETURN 0;
end;
The "Trapping Errors" documentation states:

 When an error is caught by an EXCEPTION clause,
the local variables
 of the PL/pgSQL function remain as they were
when
the error occurred,
 but all changes to persistent database state
within the block are
 rolled back.

Since the divide-by-zero error is in the same
block
as the INSERT,
the INSERT is rolled back.  Also, you can't issue
COMMIT inside a
function -- see the "Structure of PL/pgSQL"
documentation:


http://www.postgresql.org/docs/8.0/static/plpgsql-structure.html
 Functions and trigger procedures are always
executed within a
 transaction established by an outer query  they
cannot start or
 commit that transaction, since there would be no
context for them
 to execute in.  However, a block containing an
EXCEPTION clause
 effectively forms a subtransaction that can be
rolled back without
 affecting the outer transaction.

--
Michael Fuhr

---------------------------(end of
broadcast)---------------------------
TIP 4: Have you searched our list archives?

              http://archives.postgresql.org

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam
protection around http://mail.yahoo.com


__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend


---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

Reply via email to