NAME
DBIx::TransactionManager - Transaction handling for database.
SYNOPSIS
RAII style transaction management:
use
DBI;
my
$dbh
= DBI->
connect
(
'dbi:SQLite:'
);
my
$tm
= DBIx::TransactionManager->new(
$dbh
);
# create transaction object
my
$txn
=
$tm
->txn_scope;
# execute query
$dbh
->
do
(
"insert into foo (id, var) values (1,'baz')"
);
# And you can do multiple database operations here
# and commit it.
$txn
->commit;
Nested transaction usage:
use
DBI;
my
$dbh
= DBI->
connect
(
'dbi:SQLite:'
);
my
$tm
= DBIx::TransactionManager->new(
$dbh
);
{
my
$txn
=
$tm
->txn_scope;
$dbh
->
do
(
"insert into foo (id, var) values (1,'baz')"
);
{
my
$txn2
=
$tm
->txn_scope;
$dbh
->
do
(
"insert into foo (id, var) values (2,'bab')"
);
$txn2
->commit;
}
{
my
$txn3
=
$tm
->txn_scope;
$dbh
->
do
(
"insert into foo (id, var) values (3,'bee')"
);
$txn3
->commit;
}
$txn
->commit;
}
DESCRIPTION
DBIx::TransactionManager is a simple transaction manager. like DBIx::Class::Storage::TxnScopeGuard.
This module provides two futures.
If you are writing of DBIx::* or O/R Mapper, see DBIx::TransactionManager::Developers.
METHODS
- my $tm = DBIx::TransactionManager->new($dbh)
-
Creating an instance of this class.
$dbh
is required. - my $txn = $tm->txn_scope(%args)
-
Get DBIx::TransactionManager::ScopeGuard's instance object.
Options for this method is only for module creators, see DBIx::TransactionManager::Developers.
DBIx::TransactionManager::ScopeGuard's METHODS
- $txn->commit()
-
Commit the transaction.
If the
$tm
is in a nested transaction, TransactionManager doesn't do COMMIT at here. TM just poped transaction stack and do nothing. - $txn->rollback()
-
Rollback the transaction.
If the
$tm
is in a nested transaction, TransactionManager doesn't do ROLLBACK at here. TM just poped transaction stack and do nothing.
DBIx::TransactionManager and other transaction managers
You cannot use other transaction manager and DBIx::TransactionManager at once.
If you are using O/R mapper, you should use that's transaction management feature.
AUTHOR
Atsushi Kobayashi <nekokak _at_ gmail _dot_ com>
SEE ALSO
DBIx::Class::Storage::TxnScopeGuard
LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.