The current DBD::Pg manpage says that "According to the classification of DBI, 
PostgreSQL is a database in which a transaction must be explicitly started."

I find this statement confusing. Its most plausible interpretation implies that 
any statement changing the database is ineffective without either AutoCommit = 
1 or a begin_work statement. But I find that with AutoCommit = 0 and no 
begin_work statement changes to a database are effective when a commit 
statement appears before the disconnection. Thus, it appears that DBD::Pg 
automatically issues a BEGIN after a connection when AutoCommit = 0. But I 
don't find anything in the documentation telling me that.

True, the DBI manpage says that for a database in which a transaction must be 
explicitly started "the driver will automatically begin an explicit transaction 
when 'AutoCommit' is turned off". But it isn't clear to me that setting 
AutoCommit to 0 as part of the connect statement is an instance of "turning 
off" AutoCommit. So I think it would be helpful to state explicitly that a 
begin_work statement after connection is unnecessary when AutoCommit = 0.
ˉ

Reply via email to