Re: transactions from PHP - double COMMIT required? - Mailing list pgsql-php

From Robert Treat
Subject Re: transactions from PHP - double COMMIT required?
Date
Msg-id 200703011353.07621.xzilla@users.sourceforge.net
Whole thread Raw
In response to Re: transactions from PHP - double COMMIT required?  ("Martin A. Marques" <martin@bugs.unl.edu.ar>)
Responses Re: transactions from PHP - double COMMIT required?
List pgsql-php
On Thursday 01 March 2007 12:25, Martin A. Marques wrote:
> mikie wrote:
> > 2007/3/1, Martin Marques <martin@bugs.unl.edu.ar>:
> >> mikie 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 ?
> >>
> >> I may not have gotten your question right, but with one commit (or end)
> >> is enough. Transaction gets closed (commited or rolled back), and you
> >> can start a new transaction with BEGIN.
> >
> > Thats exactly what I was thinking, too. But PHP does things in some
> > other way, I guess.
> > I am sending an entire sql transaction block to the PHP pg_query
> > command, so it starts with BEGIN and ends with COMMIT. Then I still
> > have to execute another pg_query with "commit;" only - thats why I am
> > asking here if maybe someone know what the problem is.
>

It's possible that php is receiving an error back from one query and ignoring
the rest of the queries being sent (though that's not my recollection of how
it works, that's the behavior of what your describing, and you're using older
software aiui)

> Try executing the query without the last commit, and afterwords execute
> another query with commit.
>
> I personaly don't like to mix diferent querys and comands in one
> pg_query() line. Also, I am more bound to using things like MDB2 or PDO,
> which makes life easier.
>
> BTW, if you have log_statments = 'all', could you see those logs to
> check if the commits are really getting to the server?
>

Yeah, do the above recommendation to see if all of your statements are making
thier way into pg

--
Robert Treat
Build A Brighter LAMP :: Linux Apache {middleware} PostgreSQL

pgsql-php by date:

Previous
From: Jeff MacDonald
Date:
Subject: Re: transactions from PHP - double COMMIT required?
Next
From: mikie
Date:
Subject: Re: transactions from PHP - double COMMIT required?