- or download this
eval {
local $dbh->{AutoCommit} = 0;
};
$self->{_can_do_transactions} = $@ ? 0 : 1;
- or download this
$self->{_can_do_transactions} = eval {
local $dbh->{AutoCommit} = 0;
1
};
- or download this
$self->{_can_do_transactions} = eval {
$dbh->begin_work();
$dbh->rollback()
};
- or download this
my $in_trans = eval { $dbh->begin_work() };
if (!eval {
...
eval { $dbh->rollback() } if $in_trans;
die $msg;
}
- or download this
use Sub::ScopeFinalizer qw( scope_finalizer );
...
$pending_rollback->disable();
$dbh->commit() if $in_trans;
}
- or download this
BEGIN {
package TransactionMaybe;
...
code_that_touches_db();
$transaction->commit();
}