Обсуждение: determining if there's a transaction in progress
hi- i'm using libpq. is there any way to determine if there is a transaction is process thru libpq? specifically, i'm looking for a function that would tell me whether or not there are changes that should be committed to the db before program exit. thanks- dan
Hello Daniel, Friday, August 16, 2002, 10:54:26 AM, you wrote: DK> hi- DK> i'm using libpq. is there any way to determine if there is a transaction DK> is process thru libpq? There is not. DK> specifically, i'm looking for a function that would tell me whether or not DK> there are changes that should be committed to the db before program exit. If you want to ensure it, I suggest you to *always* start a transaction and then commit it at the end. ------------- Best regards,Steve Howe mailto:howe@carcass.dhs.org
Steve Howe wrote: >Hello Daniel, >Friday, August 16, 2002, 10:54:26 AM, you wrote: >DK> hi- >DK> i'm using libpq. is there any way to determine if there is a transaction >DK> is process thru libpq? > >There is not. > > I too could benefit from a libpq feature that indicates if a transaction is pending. This helps in determining in a destructor (or Ada finalization) whether the default action to rollback/commit is necessary (rather than depend upon the server default action). Assuming it is always necessary is clumsy, and imposes unnecessary overhead in situations where a transaction may not be in progress. Wish 2: After performing an INSERT operation, with a column containing a serial value, it would be nice to obtain that serial value without having to resort to a subsequent SELECT on OID to get at it. INFORMIX (and ORACLE?) make this information available to the embedded C/C++ clients. The same in libpq would be more efficient. Thanks, Warren. -- Warren W. Gay VE3WWG http://home.cogeco.ca/~ve3wwg
Warren W. Gay VE3WWG wrote: <cut> > I too could benefit from a libpq feature that indicates if a transaction > is pending. This > helps in determining in a destructor (or Ada finalization) whether the > default action > to rollback/commit is necessary (rather than depend upon the server > default action). > Assuming it is always necessary is clumsy, and imposes unnecessary > overhead in > situations where a transaction may not be in progress. </cut> In Ada, you could keep track of transaction state in a package. Put 'start_trans', 'commit' and 'rollback' procedures that changes the transaction state accordingly. You'll then need a function 'trans_in_progress' to check it Example at http://home.swipnet.se/lundin/ada_95_tools.html /Bj�rn