ShcemaベースになってからえらいことになってるDBIx::Classです。

Catalyst::Model::DBICもまだDBIx::Class::Schema::Loader対応になってないのでCatalyst::Model::DBIC::Plainを使ってたりします。

で、DBIx::Class::Manual::Cookbookにも書いてありますが、C::M::DBIC::Plainでトランザクションを管理する場合は

eval {
    $c->model('DBIC')->storage->txn_begin;
    $c->model('DBIC::Entry')->create({
        title       => $c->request->parameters->{title},
        body        => $c->request->parameters->{body},
	});
    $c->model('DBIC')->storage->txn_commit;
};

if ($@) {
    $c->error("Rollback: $@");
    eval {$c->model('DBIC')->storage->txn_rollback};
}

こんな感じでよさげです。

もちろんMySQLならInnoDBを使ってApp::M::DBICでRaiseErrr => 1, AutoCommit => 0をしておく必要があります。

              

              

トラックバック(1)

トラックバックURL: http://mt.hide-k.net/mt-tb.cgi/415

以前 Catalyst::Model::DBIC::Plainでのトランザクション管理 というエントリーを書きました。 Catalyst::Model::... 続きを読む

コメントする

プロフィール

このブログ記事について

このページは、hideが2006年2月 7日 08:33に書いたブログ記事です。

ひとつ前のブログ記事は「TSUTAYA DISCASを使ってみた」です。

次のブログ記事は「お引越し」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。