X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage.pm;h=bf50762d80be76d991a3e9af44f8a1cac433312a;hb=e8b32a6d045b4d04ba023d48be1c8e32065fcec6;hp=e57a48ba7121bb0d1fa0d641c31851791e6a53ed;hpb=243a6b72cfb2a6f2ccfcd84b665f1880790e2ff9;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/Storage.pm b/lib/DBIx/Class/Storage.pm index e57a48b..bf50762 100644 --- a/lib/DBIx/Class/Storage.pm +++ b/lib/DBIx/Class/Storage.pm @@ -248,6 +248,9 @@ sub txn_begin { die "Virtual method!" } Issues a commit of the current transaction. +It does I perform an actual storage commit unless there's a DBIx::Class +transaction currently in effect (i.e. you called L). + =cut sub txn_commit { die "Virtual method!" } @@ -301,7 +304,23 @@ sub svp_rollback { die "Virtual method!" } =head2 txn_scope_guard -Return an object that does stuff. +An alternative way of transaction handling based on +L: + + my $txn_guard = $storage->txn_scope_guard; + + $row->col1("val1"); + $row->update; + + $txn_guard->commit; + +If an exception occurs, or the guard object otherwise leaves the scope +before C<< $txn_guard->commit >> is called, the transaction will be rolled +back by an explicit L call. In essence this is akin to +using a L/L pair, without having to worry +about calling L at the right places. Note that since there +is no defined code closure, there will be no retries and other magic upon +database disconnection. If you need such functionality see L. =cut @@ -312,7 +331,7 @@ sub txn_scope_guard { =head2 sql_maker Returns a C object - normally an object of class -C. +C. =cut @@ -438,15 +457,6 @@ only. sub select_single { die "Virtual method!" } -=head2 reload_row ($row) - -given a L object, loads and returns the matching version from -storage. Does not effect the existing row object. - -=cut - -sub reload_row { die "Virtual method!" } - =head2 columns_info_for Returns metadata for the given source's columns. This