[Dbix-class] how to implement Transactions (over different db
tables) in a Catalyst project
Peter Rabbitson
rabbit+dbic at rabbit.us
Tue Jul 7 12:32:45 GMT 2009
On Tue, Jul 07, 2009 at 08:44:13AM +1000, kakimoto at tpg.com.au wrote:
> hi, everyone,
>
> I finally looked at the updated doc for txn_do and transactions have
> been implemented correctly in my application.
>
> Nevertheless, I do have a few questions (at the bottom).
>
>
>
>
>
> sub save_complete_records
> {
> ...
>
> eval
> {
> $c->model('myAppDB')->schema->txn_do( sub
> {
> ...
> $c->forward(
> '/subscriptions/_save_address',
> [
> { 'policy_id' => $policy_id, }
> ]
> );
>
> ...
> }
> if ($@)
> {
> $c->log->debug(' Exception manually trapped here : ' . $@ );
> $c->model('myAppDB')->schema->txn_rollback or die "Cannot ROLL
> BACK - Address module";
> $c->log->debug(' manually rolled back' );
> $c->error(
> q{ An error has occured with the listing. If this problem } .
> q{persists please contact our helpdesk at
> helpdesk at insuranceline.}.
> q{com.nz.}
> );
> }
> }
>
>
> To test, I purposedly entered a very long string for one of the database
> attributes to make the transaction fail.
>
> I have the following questions:
> 1) I looked at the terminal with all the debug messages. I noticed that
> the exception was caught and eventhough the roll back was done, I do not
> see the print outs from the liens within the "if ($@)" (exception
> handling) section above. Why is that?
Because you did not end your eval with a ';', and you are not running
with strict/warnings? :)
More information about the DBIx-Class
mailing list