Thread: Using auto-commit OFF for transactions - instead of BEGIN
Hello I ported a relatively simple application using Oracle 8i with a JDBC client to PostgreSQL 7.4 with the same JDBC client, and everything just worked! One thing that did come to light was that PG offers a proprietary 'BEGIN' statement as a means of controlling transactions. With Oracle, I was used to setting auto-commit to false at the start of a transaction, and then calling commit or rollback at the end. Is it safe for me to continue setting auto-commit to false for transactions, and are there any compelling reasons - significant performance gains, perhaps - why I might want to consider adopting PG's 'BEGIN' statement instead? Many thanks in anticipation. Harry Mantheakis London, UK
Harry, You should use the driver's set autocommit(false) instead, as then the driver will know the state of the connection. BTW, I'm sure oracle has a similiar "begin" statement. Dave On Mon, 2004-03-08 at 06:40, Harry Mantheakis wrote: > Hello > > I ported a relatively simple application using Oracle 8i with a JDBC client > to PostgreSQL 7.4 with the same JDBC client, and everything just worked! > > One thing that did come to light was that PG offers a proprietary 'BEGIN' > statement as a means of controlling transactions. > > With Oracle, I was used to setting auto-commit to false at the start of a > transaction, and then calling commit or rollback at the end. > > Is it safe for me to continue setting auto-commit to false for transactions, > and are there any compelling reasons - significant performance gains, > perhaps - why I might want to consider adopting PG's 'BEGIN' statement > instead? > > Many thanks in anticipation. > > Harry Mantheakis > London, UK > > > ---------------------------(end of broadcast)--------------------------- > TIP 2: you can get off all lists at once with the unregister command > (send "unregister YourEmailAddressHere" to majordomo@postgresql.org) > -- Dave Cramer 519 939 0336 ICQ # 14675561
On Mon, 8 Mar 2004, Dave Cramer wrote: > Harry, > > You should use the driver's set autocommit(false) instead, as then the > driver will know the state of the connection. > > BTW, I'm sure oracle has a similiar "begin" statement. > Oracle in fact does not have a begin statement, it does not have a native autocommit mode, you are always in a transaction, so any commit/rollback automatically starts a new transaction. Kris Jurka
On 08/03/2004 11:40 Harry Mantheakis wrote: > Hello > > I ported a relatively simple application using Oracle 8i with a JDBC > client > to PostgreSQL 7.4 with the same JDBC client, and everything just worked! > > One thing that did come to light was that PG offers a proprietary 'BEGIN' > statement as a means of controlling transactions. > > With Oracle, I was used to setting auto-commit to false at the start of a > transaction, and then calling commit or rollback at the end. > > Is it safe for me to continue setting auto-commit to false for > transactions, > and are there any compelling reasons - significant performance gains, > perhaps - why I might want to consider adopting PG's 'BEGIN' statement > instead? Not only is it safe, it's the proper way to do it. FWIF, the driver actually generates BEGIN and END commands under the covers and issueing these yourself can potentially confuse it. HTH -- Paul Thomas +------------------------------+---------------------------------------------+ | Thomas Micro Systems Limited | Software Solutions for Business | | Computer Consultants | http://www.thomas-micro-systems-ltd.co.uk | +------------------------------+---------------------------------------------+