Будь осторожен. Вы можете столкнуться с некоторыми интересными ситуациями, если отключите AutoCommit и не будете выполнять коммит в зависимости от того, отключены ли вы:
perl -le 'use DBI;my $h = DBI->connect("dbi:ODBC:test","test","test", {AutoCommit => 0, RaiseError=>1}); $h->do(q/insert into mje values(?, ?)/, undef, 1, "fred");'
Возврат отката () из-за DESTROY без явного отключения () проверки дескриптора DBD :: ODBC :: db.
Обратите внимание, поскольку не было явного отключения, вставка была отменена, и мы получили ошибку.
perl -le 'use DBI;my $h = DBI->connect("dbi:ODBC:test","test","test", {AutoCommit => 0, RaiseError=>1}); $h->do(q/insert into mje values(?, ?)/, undef, 1, "fred");$h->disconnect or die $DBI::errstr;'
Здесь, похоже, нет ничего плохого, хотя commit не был вызван, но строки не попали в базу данных. Таким образом, разъединение скрывало тот факт, что строки не были зафиксированы.