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@xxxxxx> PGP Key: http://www.rbt.ca/rbtpub.asc
Attachment:
signature.asc
Description: This is a digitally signed message part