Thread: ECPG - Clarfication of '-t', 'autocommit', BEGIN?
The ecpg man page says that '-t' will turn autocommit 'on', that the default is that otherwise a 'commit' statement is needed to cause a 'commit'. In a posting from December of 2001, there was a complaint that issuing EXEC SQL BEGIN; immediately following CONNECT returned "BEGIN: already a transaction in progress", to which Michael Meskes replied that it is necessary to run ecpg *with* the '-t' switch (or, as someone else said, issue 'exec sql set autocommit to on') if you want to BEGIN your own transactions. Am I wrong in thinking that BEGIN-(set of commands) -COMMIT should be equivalent to 'start transaction -perform sequence of commands-commit result of sequence of commands'? Or does BEGIN become superfluous when running *without* -t? Could someone please clarify? Thanks.
On Thu, Sep 26, 2002 at 01:57:40PM -0400, William West wrote: > The ecpg man page says that '-t' will turn autocommit 'on', that > the default is that otherwise a 'commit' statement is needed to > cause a 'commit'. > ... Which indeed is correct. "Autocommit" means that the mode is the same as with for instance psql. Each statement is run inside its own transaction and thus you do only need a "commit" if you specified a "begin" before. Without "autocommit" the mode is equivalent to Oracle in that an explicit transaction is started automatically and all you need to do is issue a "commit" or "rollback" to end. After that a new transaction is started immediately. > Am I wrong in thinking that BEGIN-(set of commands) > -COMMIT should be equivalent to 'start transaction > -perform sequence of commands-commit result of > sequence of commands'? Or does BEGIN become > superfluous when running *without* -t? Could someone > please clarify? Yes, that's it. No need to say "begin" when not using "-t". Michael -- Michael Meskes Michael@Fam-Meskes.De Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL!