NAME

DB::Transaction - feather-weight transaction management for your DBI handles

SYNOPSIS

use DB::Transaction qw(run_in_transaction);

my $dbh = My::Application->get_dbh;

run_in_transaction {
    $dbh->do('
        update risky_business -- in some fashion
    ');
} db_handle => $dbh, on_error => 'rollback';

DESCRIPTION

DB::Transaction provides one function: run_in_transaction

EXPORTS

By default, none. On request, run_in_transaction.

run_in_transaction BLOCK db_handle => $db_handle, on_error => ['rollback' | 'continue']

Begin a transaction on $db_handle, then run BLOCK. Any errors raised in the course of executing BLOCK will cause the current transaction to be handled according to your on_error specification.

on_error may be one of these two options:

  • rollback -- call this dbh's ->rollback method

  • continue -- just keep on chugging, man!

on_error => 'rollback' is the default behavior.

Transactions may be nested, though your underlying database may not support nested transactions. It's up to you to know whether this is supported or not.

CONTRIBUTING

To contribute back to this project, log in to your GitHub account and visit http://github.com/shutterstock/perl-db-transaction, then fork the repository.

Create a feature branch, make your changes, push them back to your fork, and submit a pull request via GitHub.

# fork the project in github

git clone git://github.com/<your-name>/perl-db-transaction.git
git checkout -b feature-add-spiffy-functionality

emacs -nw t/spiffy-functionality.t   # hack hack hack
emacs -nw lib/DB/Transaction.pm      # hack hack hack

git push feature-add-spiffy-functionality origin

# submit pull request via github

AUTHORS

Written by Aaron Cohen <morninded@cpan.org> and Belden Lyman <belden@cpan.org> at Shutterstock, Inc. Released to CPAN by Shutterstock, Inc.

If you like the idea of working at a company that supports open-source development, why not checkout our jobs page and drop us a line?

COPYRIGHT AND LICENSE

(c) 2013 Shutterstock, Inc. All rights reserved.

This library is free software: you may redistribute it and/or modify it under the same terms as Perl itself; either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.