Re: transactions from PHP - double COMMIT required?

From: mikie <mikie(dot)pl(at)gmail(dot)com>
To: pgsql-php(at)postgresql(dot)org
Subject: Re: transactions from PHP - double COMMIT required?
Date: 2007-03-01 19:38:16
Message-ID: ca35ce500703011138g2a7e0440w86fb85fd8f639604@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-php

2007/3/1, Robert Treat <xzilla(at)users(dot)sourceforge(dot)net>:
> On Thursday 01 March 2007 12:25, Martin A. Marques wrote:
> > mikie wrote:
> > > 2007/3/1, Martin Marques <martin(at)bugs(dot)unl(dot)edu(dot)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

OK, I have checked the logs. I can see both COMMIT statements in the
log - the first commit from my transaction and then the other that I
send to workaround the problem.

In response to

Responses

Browse pgsql-php by date

  From Date Subject
Next Message Martin Marques 2007-03-02 12:51:17 Re: transactions from PHP - double COMMIT required?
Previous Message Robert Treat 2007-03-01 18:53:07 Re: transactions from PHP - double COMMIT required?