概要 本日はデザインパターンとMySQLの話です。 なんか愉快な音楽の話ではありません。 問題が起きた 最近お仕事でこんなプログラム書きました。 package App::Web::Controller; sub dispatch_buy { my $self = sfhit; ... $db->txn_start(); try{ die unless $user->has_enough_money($gold); $user->get_item($hoge); $user->lose_money($gold); } catch { my $err = $_; die $err; $db->rollback; $self->redirect(); } $db->commit; }内容はでたらめですが、早い話が同じトランザクション内でお金が足りるかをチェックして、足りてなければrollbac