|
Home > Archive > PHP with PostgreSQL > September 2005 > commit and rollback
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
commit and rollback
|
|
| WeiShang 2005-09-10, 3:23 am |
| Hi,
I have a problem about commit and rollback using php. For the script below,
if "foo" is called and commit and if rollback statment also run. Will the
update statement under foo also rollback? or commit?
Thanks in advance!
----------------------------------------------------------------------------
-----------Script starts
function foo(var1,var2)
{
pg_query($db,"begin");
pg_query($db,"<update statement here>");
pg_query($db,"commit");
}
pg_query($db,"begin");
......
foo(v1,v2);
$result1=pg_query($d
b,"<update statment here>");
if (pg_affected_rows($r
esult)==0)
pg_query($db,"rollback");
else
pg_query($db,"commit");
----------------------------------------------------------------------------
-----------Script end
--
| |
| John DeSoi 2005-09-13, 7:24 am |
|
On Sep 10, 2005, at 3:48 AM, WeiShang wrote:
> I have a problem about commit and rollback using php. For the
> script below,
> if "foo" is called and commit and if rollback statment also run.
> Will the
> update statement under foo also rollback? or commit?
It will commit, but it will also complete the transaction causing
everything after it to run outside the transaction. Probably not what
you would want to do.
If foo can be called both inside and outside of a transaction, you
should call pg_transaction_statu
s (assuming PHP 5) and only begin/
commit in foo if there is no existing transaction. If you are not
using PHP 5, then setup some flag to know if you are in a transaction.
John DeSoi, Ph.D.
http://pgedit.com/
Power Tools for PostgreSQL
---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?
http://archives.postgresql.org
|
|
|
|
|