Re: transactions from PHP - double COMMIT required?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



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.pl@xxxxxxxxx > 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


[Index of Archives]     [Postgresql General]     [Postgresql Admin]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Yosemite Backpacking]     [Postgresql Jobs]

  Powered by Linux