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

Re: Cleaning up aborted transactions

From: Rod Taylor <rbt(at)rbt(dot)ca>
To: Greg Spiegelberg <gspiegelberg(at)cranel(dot)com>
Cc: pgsql-php(at)postgresql(dot)org
Subject: Re: Cleaning up aborted transactions
Date: 2003-06-10 13:19:22
Message-ID: 1055251161.91204.7.camel@jester (view raw, whole thread or download thread mbox)
Lists: pgsql-php
On Tue, 2003-06-10 at 07:39, Greg Spiegelberg wrote:
> Hi all,
> Just so I have this straight, because I've been wondering the same,
> if someone on my web site does a SELECT and then clicks on the browser
> stop or gets click happy hitting one or many other links on the same
> web page then the 1st SELECT and all other interrupted SELECT's should
> get rolled back if each query starts with a BEGIN; because there is a
> disconnect.  Correct?

What happens is up to PHP to decide in this case.  If the browser
disconnects from the webserver, thus PHP is interrupted, then yes, that
sounds like what should happen.

> What about with persistant connections?

Persistent & pooled connections are managed by the client.  It is up to
PHP to determine what needs to happen.  PHP should be resetting (rolling
back) the connection when it re-enters into the pool, but the database
has no knowledge that sharing is taking place.

I'm not entirely sure.  Haven't tried persistent connections since the
early 3.x days.

> Rod Taylor wrote:
> > On Tue, 2003-06-10 at 05:21, Michael Glaesemann wrote:
> > 
> >>On Tuesday, Jun 10, 2003, at 17:05 Asia/Tokyo, Adrian Tineo wrote:
> >>
> >>>pg_connect($connection);
> >>>pg_query($connection,"BEGIN;");
> >>>$insert="INSERT INTO table VALUES (2,7,5);
> >>>$result=pg_query($connection,$insert);
> >>>if(!$result){
> >>>    pg_query($connection,"ROLLBACK");
> >>>    //Something went wrong with the insert so we rollback and
> >>
> > nothing
> > 
> >>>changes in the db
> >>>}else{
> >>>    pg_query($connection,"COMMIT");
> >>>    // If everything went all right, then we commit the changes
> >>>}
> >>>pg_close($connection);
> >>
> >>
> >>Thanks, Adrian, for the illustration, especially the instance with 
> >>ROLLBACK. I've figured out this sequence now.
> >>
> >>What I'm wondering about is what happens when this sequence isn't 
> >>properly followed and the script quits before issuing a ROLLBACK or a 
> >>COMMIT. Obviously it's not a good situation and one to be avoided.
> > 
> > 
> > The database, unless explicitly told to commit and the commit is
> > completely successful will always rollback.
> > 
> > So a disconnect results in a rollback.
> > 
Rod Taylor <rbt(at)rbt(dot)ca>

PGP Key:

In response to

pgsql-php by date

Next:From: Adrian TineoDate: 2003-06-10 13:42:38
Subject: Re: Cleaning up aborted transactions
Previous:From: Rod TaylorDate: 2003-06-10 11:49:03
Subject: Re: Cleaning up aborted transactions

Privacy Policy | About PostgreSQL
Copyright © 1996-2017 The PostgreSQL Global Development Group