MT::Object(というより親クラスのData::ObjectDriver::BaseObject)にはトランザクション操作用のbegin_work
などが用意されています。
MT::Object でのトランザクション(Rollback / Commit) - フリーエンジニアライフ
ただ、
MTのデータベースで任意のSQLを実行して結果を取得する - フリーエンジニアライフ
のような直接Data::ObjectDriverでSQLを実行するようなケースでは、同じようにしてData::ObjectDriverを利用した方がキモチイイです。
my $class = MT->model('entry'); $class->driver->begin_work; eval { # 更新処理など }; if ( my $errstr = $@ ) { $class->driver->rollback; } else { $class->driver->commit; }
MT::Objectのインスタンスメソッド(saveとか)の場合は、そちらのトランザクション操作を使うべきでしょう。