Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: transactions from PHP - double COMMIT required?



Probably because the pgsql extension in PHP has an internal representation that doesn't fit with what the DB does (auto rollback on error).

it keeps a state of transaction flag as active even though the DB rolled back when the error occured thus flagging an error when you want to start another one or execute another query.

BEGIN

Queries

check for error (pg_last_error) after each query, if error, rollback and exit transaction "block"

COMMIT (no errors found)

The best would be to enclose the query in a function so that you can "exit" the block with a return statement or some similar construct. I can't remember if PHP supports block definition like in C

{
 // group
 // of
 // calls
 // block
}

David

On 3/1/07, mikie <mikie(dot)pl(at)gmail(dot)com > wrote:
> > But getting back to my problem - perhaps there is something I
> > misunderstood: is it the client application responsibility to check if
> > the transaction failed or succeeded and issue COMMIT or ROLLBACK
> > accordingly (how do I close the transaction block in that case)?
> > Or is it the database server that is suppose to check if transaction
> > succeded and perform the query, or ROLLBACK if anything went wrong?
>
> PG will rollback all transactions that have an error in some part, as it
> can't commit the transaction as a whole.

OK, so my way of programming seems correct.
Then why do I have to send another COMMIT after failed transaction to
continue with next queries in the same php script ?

--
Mike

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings



Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group