X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage.pm;h=a38cf4701bbf73665fca76742a8ca91cb38d6156;hb=7d7d697500011de9ac151b6303f27e56f696cec6;hp=604ad5b7e8ed936799f5caaf2c35914dfd826fb4;hpb=89028f42595b587599191bad8d1b5fe17f11c131;p=dbsrgits%2FDBIx-Class-Historic.git
diff --git a/lib/DBIx/Class/Storage.pm b/lib/DBIx/Class/Storage.pm
index 604ad5b..a38cf47 100644
--- a/lib/DBIx/Class/Storage.pm
+++ b/lib/DBIx/Class/Storage.pm
@@ -299,21 +299,25 @@ sub svp_rollback { die "Virtual method!" }
=for comment
-=head2 txn_scope_guard (EXPERIMENTAL)
+=head2 txn_scope_guard
-An alternative way of using transactions to C:
+An alternative way of transaction handling based on
+L:
- my $txn = $storage->txn_scope_guard;
+ my $txn_guard = $storage->txn_scope_guard;
$row->col1("val1");
$row->update;
- $txn->commit;
+ $txn_guard->commit;
-If a exception occurs, the transaction will be rolled back. This is still very
-experiemental, and we are not 100% sure it is working right when nested. The
-onus is on you as the user to make sure you dont forget to call
-$C<$txn->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
@@ -324,7 +328,7 @@ sub txn_scope_guard {
=head2 sql_maker
Returns a C object - normally an object of class
-C.
+C.
=cut